1

我有一本看起来像这样的字典:

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]

4

4 回答 4

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]
于 2013-03-19T01:01:33.643 回答
2

您可以使用列表理解

In [62]: [k for k,v in child_parent.iteritems() if v==0]
Out[62]: [1, 2]
于 2013-03-19T01:02:15.493 回答
1
def find_keys(d, x):
  return [key for key in d if d[key] == x]

这会遍历字典中的每个键,d并从与 value 对应的所有键中创建一个列表x

于 2013-03-19T01:02:48.347 回答
0

如果您只这样做一次,请在其他答案中使用列表理解方法。

如果您多次这样做,请创建一个按值索引键的新字典:

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]
于 2013-03-19T01:15:55.963 回答