我有一本看起来像这样的字典:
child_parent={}
child_parent[1]=0
child_parent[2]=0
child_parent[3]=2
child_parent[4]=2
如果给定 0,我如何在值为 0 的列表中找到所有键,即 pythonic?
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 的列表中找到所有键,即 pythonic?
0 的最终结果是 [1,2] 和 2 [3,4]
对字典使用列表理解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]
您可以使用列表理解:
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]
这会遍历字典中的每个键,d
并从与 value 对应的所有键中创建一个列表x
。
如果您只这样做一次,请在其他答案中使用列表理解方法。
如果您多次这样做,请创建一个按值索引键的新字典:
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]