次のような辞書があります。
child_parent={}
child_parent[1]=0
child_parent[2]=0
child_parent[3]=2
child_parent[4]=2
0 が与えられた場合、値が 0 であるリストにすべてのキーを見つけるにはどうすればよいですか?
0 の最終結果は [1,2] で、2 の場合は [3,4]
次のような辞書があります。
child_parent={}
child_parent[1]=0
child_parent[2]=0
child_parent[3]=2
child_parent[4]=2
0 が与えられた場合、値が 0 であるリストにすべてのキーを見つけるにはどうすればよいですか?
0 の最終結果は [1,2] で、2 の場合は [3,4]
Use a list comprehension over the dict's items
:
[k for k, v in child_parent.items() if v == 0]
>>> [k for k, v in child_parent.items() if v == 0]
[1, 2]
>>> [k for k, v in child_parent.items() if v == 2]
[3, 4]
You could use a list comprehension:
In [62]: [k for k,v in child_parent.iteritems() if v==0]
Out[62]: [1, 2]
def find_keys(d, x):
return [key for key in d if d[key] == x]
This iterates over each key in the dictionary d
and creates a list out of all the keys corresponding to value x
.
これを一度だけ行う場合は、他の回答でリスト内包表記法を使用してください。
これを複数回行う場合は、キーを値でインデックス付けする新しい dict を作成します。
from collections import dictdefault
def valueindex(d):
nd = dictdefault(list)
for k,v in d.iteritems():
nd[v].append(k)
return nd
parent_child = valueindex(childparent)
assert parent_child[0] == [1,2]
assert parent_child[1] == [3,4]