在字典中给出值,创建一个键列表

时间:2013-03-19 00:59:51

标签: python

我的字典看起来像这样:

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 个答案:

答案 0 :(得分: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]

答案 1 :(得分:2)

您可以使用list comprehension

In [62]: [k for k,v in child_parent.iteritems() if v==0]
Out[62]: [1, 2]

答案 2 :(得分:1)

def find_keys(d, x):
  return [key for key in d if d[key] == x]

迭代字典d中的每个键,并创建与值x对应的所有键中的列表。

答案 3 :(得分:0)

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

如果您多次这样做,请创建一个新的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]