(値から検索するのではなく)Pythonでディクショナリキーを変数として直接取得するにはどうすればよいですか?


189

この基本的な質問で申し訳ありませんが、これに対する私の検索は、キーのテキスト/名前が欲しいので使用したくない値に基づいて辞書のキーを取得する方法以外は何も表示しません。辞書に多くのエントリがある場合、値によって最終的に2つ以上のキーを返す可能性があります...私がやろうとしているのはこれです:

mydictionary={'keyname':'somevalue'}
for current in mydictionary:

   result = mydictionary.(some_function_to_get_key_name)[current]
   print result
   "keyname"

これは、これらをドキュメントに印刷していて、これを行う際にキー名と値を使用したいためです。

以下のメソッドを見ましたが、これはキーの値を返すだけのようです

get(key[, default])

'keyname'が辞書に存在することを確認しますか?あなたはそのため、すでにそれを持っています。
2010

1
いいえ、言ったように、印刷する必要があります。それは、多数のキーを反復処理することになります
Rick

current現在のキーである、ただやるprint current
Moberg

4
どのようにして辞書の最初のキーだけを取得しますか?(反復なし)
VISQL

回答:


238

あなたはキーで反復する必要があります:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])

10
あなたはただ書くことができますfor key in mydictionary:
blokeley 2015

7
Python 3.6の場合:print (f"key: {key}, value: {mydictionary[key]}")
JinSnow 2017年

94

キーと値を出力する場合は、以下を使用します。

for key, value in my_dict.iteritems():
    print key, value

25
Python 3の場合:iteritems()ではなくitems()
toshiro92

82

これは、これらをドキュメントに印刷していて、これを行う際にキー名と値を使用したいためです。

上記の要件に基づいて、これは私が提案するものです:

keys = mydictionary.keys()
keys.sort()

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))

私はfor loop on my_dict.item()やリスト内包のような他の答えを好みますが、keys = list(my_dict.keys)誰かがPython 3でこれを実行したい場合に備えて:(行2)keys = sorted(my_dict.keys())+ add()で印刷します。
Honiix 16

49

辞書に次のようなペアが1つ含まれている場合:

d = {'age':24}

その後、あなたは得ることができます

field, value = d.items()[0]

Python 3.5の場合は、次のようにします。

key = list(d.keys())[0]

4
Python3.5:TypeError: 'dict_items' object does not support indexing
Sinux

かなりハックですが、d .__ iter __().__ next __()がトリックです。あなたは「年齢」を得る。このd.items().__ iter __().__ next __()[0]でも同じ結果が得られます。
yoshi

2
python3で1組のdictsのため、この作品:key = list(d.keys())[0]
ユハUntinen

あなたが巨大な口述書を持っている場合、次のように使用するnext()方が良いです:stackoverflow.com/a/27638751/1488445
Juha Untinen

14

keys=[i for i in mydictionary.keys()] または keys = list(mydictionary.keys())


必ずコードタグを使用し、回答も説明してください。
Chrismas007 14

9

それと同じくらい簡単です:

mydictionary={'keyname':'somevalue'}
result = mydictionary.popitem()[0]

辞書を変更し、最初にそのコピーを作成する必要があります


8

*辞書キーを解凍するのに使用するだけです。例:

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')

python34:SyntaxError:割り当てターゲットとしてのみスター付き式を使用できます
Tcll

ちなみに、windowsテスト環境ではこれ以上何も実行できないため、python34を使用しています。
Tcll

5

辞書を反復処理(i)するとキーが返され、それを使用して(i)値を取得します

for i in D:
    print "key: %s, value: %s" % (i, D[i])

3

Python 3の場合キーのみを取得する場合は、これを使用します。値が必要な場合は、print(key)をprint(values)に置き換えます。

for key,value in my_dict:
  print(key)

3

私が時々やっていることは、文字列としてアクセスする必要があると思うものをすべてできるようにするために、別の辞書を作成することです。次に、キーと一致する複数のディクショナリを反復処理して、たとえば、最初の列を説明とするテーブルを作成します。

dict_names = {'key1': 'Text 1', 'key2': 'Text 2'}
dict_values = {'key1': 0, 'key2': 1} 

for key, value in dict_names.items():
    print('{0} {1}'.format(dict_names[key], dict_values[key])

膨大な数の辞書でデータを一致させることは簡単にできます(辞書を使用すると、キー名としてよく知られているものをいつでも参照できるという事実が好きです)

はい、私は関数の結果を格納するために辞書を使用しているので、これらの関数を一度だけ呼び出すたびに実行する必要がなく、いつでも結果にアクセスできます。

編集:私の例ではキー名はそれほど重要ではありません(一致する辞書のいずれかから単一の値を選択する方が簡単なので、個人的には同じキー名を使用するのが好きです)、各辞書のキーの数が同じ


0

これを行うには、リストにdictキーと値をキャストします。アイテムに対しても行うことができます。

例:

f = {'one': 'police', 'two': 'oranges', 'three': 'car'}
list(f.keys())[0] = 'one'
list(f.keys())[1] = 'two'

list(f.values())[0] = 'police'
list(f.values())[1] = 'oranges'

-2

キーと値の位置を簡単に変更し、次に値を使用してキーを取得します。ディクショナリキーは同じ値を持つことができますが、それらは異なる必要があります。たとえば、リストがあり、その最初の値が問題のキーであり、他の値が最初の値の仕様である場合:

list1=["Name",'ID=13736','Phone:1313','Dep:pyhton']

このループにより、データをディクショナリに簡単に保存して使用できます。

data_dict={}
for i in range(1, len(list1)):
     data_dict[list1[i]]=list1[0]
print(data_dict)
{'ID=13736': 'Name', 'Phone:1313': 'Name', 'Dep:pyhton': 'Name'}

次に、任意の入力値に基づいてkey(name)を検索できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.