1

次のような辞書があります。

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]

4

4 に答える 4

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

You could use a list comprehension:

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]

This iterates over each key in the dictionary d and creates a list out of all the keys corresponding to value x.

于 2013-03-19T01:02:48.347 に答える
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]
于 2013-03-19T01:15:55.963 に答える