辞書がある場合:
dict={'a':'b'}
python 3の場合、このディクショナリキーを文字列に変換し、その値を別の文字列に変換します。
print(key)
key='a'
print(type(key))
str
print(value)
value='a'
print(type(value))
str
いくつかの試み:
str(dict.key()) # returns 'dict' object has no attribute 'key'
json.dump(dict) # returns {'a':'b'} in string, but hard to process
簡単な解決策はありますか?ありがとうございました!
使用 dict.items()
:
dict.items()
( dict.iteritems()
for python 2)を使用すると、キーと値のペアが返されます。最初のものを選ぶだけです。
_>>> d = { 'a': 'b' }
>>> key, value = list(d.items())[0]
>>> key
'a'
>>> value
'b'
_
d.items()
をリストに変換し、その_0
_インデックスを選択しました。これをイテレータに変換し、next
を使用して最初に選択することもできます。
_>>> key, value = next(iter(d.items()))
>>> key
'a'
>>> value
'b'
_
dict.keys()
および dict.values()
を使用します。
dict.keys()
を使用してすべての辞書キーを取得し、最初のキーを選択することもできます。そして、dict.values()
を使用して、すべての辞書値を取得します。
_>>> key = list(d.keys())[0]
>>> key
'a'
>>> value = list(d.values())[0]
>>> value
'b'
_
ここでは、next(iter(...))
も使用できます。
_>>> key = next(iter(d.keys()))
>>> key
'a'
>>> value = next(iter(d.values()))
'b'
_
str
を確実に取得します。
上記のメソッドは、文字列の取得を保証するものではなく、キーの実際のタイプと値は何でも返します。これらを明示的にstr
に変換できます。
_>>> d = {'some_key': 1}
>>> key, value = next((str(k), str(v)) for k, v in d.items())
>>> key
'some_key'
>>> value
'1'
>>> type(key)
<class 'str'>
>>> type(value)
<class 'str'>
_
現在、key
とvalue
はどちらもstr
です。 dictの実際の値はint
でしたが。
免責事項:これらのメソッドは、最初のキー、ディクショナリの値のペアを選択します(複数のキーと値のペアがある場合)。また、辞書が空の場合は機能しません。辞書に複数の値がある場合に単純に失敗するソリューションが必要な場合は、 @ SylvainLerouxの答え を探してください。
>>> d = { 'a': 'b' }
>>> d.items()
dict_items([('a', 'b')])
この時点で、分解代入を使用して値を取得できます。
>>> [[key, value]] = d.items()
>>> key
'a'
>>> value
'b'
このソリューションの利点の1つは、それが d
に複数のエントリが含まれている場合、問題を無視する代わりに失敗する の場合です。
>>> d = { 'a': 'b', 'c':'d' }
>>> [[key, value]] = d.items()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 1)
最後に、key
とvalue
が文字列であることを確認する必要がある場合は、リスト内包表記を追加できます。
>>> d = { 1: 2 }
>>> [[key, value]] = ((str(key), str(value)) for key,value in d.items())
>>> key
'1'
>>> value
'2'
https://docs.python.org/3/library/stdtypes.html#typesmapping
あなたが探しているメソッドはkeys()
とvalues()
です。
キーと値のリストを作成します。
dict={'a':'b'}
keys = list(dict.keys())
values = list(dict.values())
次に変数を作成します:
key = keys[0]
value = values[0]