web-dev-qa-db-ja.com

python 3文字列への辞書キーと別の文字列への値

辞書がある場合:

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

簡単な解決策はありますか?ありがとうございました!

3
Chubaka

使用 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'>
_

現在、keyvalueはどちらもstrです。 dictの実際の値はintでしたが。

免責事項:これらのメソッドは、最初のキー、ディクショナリの値のペアを選択します(複数のキーと値のペアがある場合)。また、辞書が空の場合は機能しません。辞書に複数の値がある場合に単純に失敗するソリューションが必要な場合は、 @ SylvainLerouxの答え を探してください。

4
Muhammad Ahmad
>>> 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)

最後に、keyvalueが文字列であることを確認する必要がある場合は、リスト内包表記を追加できます。

>>> d = { 1: 2 }
>>> [[key, value]] = ((str(key), str(value)) for key,value in d.items())
>>> key
'1'
>>> value
'2'
4
Sylvain Leroux

https://docs.python.org/3/library/stdtypes.html#typesmapping

あなたが探しているメソッドはkeys()values()です。

1
drum

キーと値のリストを作成します。

dict={'a':'b'}

keys = list(dict.keys())
values = list(dict.values())

次に変数を作成します:

key = keys[0]
value = values[0]
1
Vlad Siv