将元组作为字典中的值处理(在列表推导中)

时间:2015-05-01 06:53:41

标签: python list-comprehension

我有这样的字典:

>>> pprint.pprint(d)
{'a': ('abc', 'pqr', 'xyz'),
 'b': ('abc', 'lmn', 'uvw'),
 'c': ('efg', 'xxx', 'yyy')}

现在,给定变量x,我希望能够列出dict中元组中第一个元素等于x的所有键。因此我这样做(在Python 2.6上):

>>> [ k for k, v in d if v[0] == x ]

我得到了

Traceback (most recent call last):
  File "", line 1, in 
ValueError: need more than 1 value to unpack

我该如何纠正?

1 个答案:

答案 0 :(得分:5)

你几乎就在那里,只是忘记了.items()与词典:

>>> d = {'a': ('abc', 'pqr', 'xyz'),
...  'b': ('abc', 'lmn', 'uvw'),
...  'c': ('efg', 'xxx', 'yyy')}
>>> x = 'abc'
>>> [ k for k, v in d.items() if v[0] == x ]
['a', 'b']

如果您不想使用.items,您也可以迭代密钥本身:

>>> [ k for k in d if d[k][0] == x ]
['a', 'b']