将元组作为字典中的值处理(在列表推导中)
Handling tuples as values within a dictionary (in list comprehensions)
我有这样一本字典:
>>> pprint.pprint(d)
{'a': ('abc', 'pqr', 'xyz'),
'b': ('abc', 'lmn', 'uvw'),
'c': ('efg', 'xxx', 'yyy')}
现在,给定一个变量 x
,我希望能够列出字典中元组中第一个元素等于 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
我该如何纠正?
你快到了,只是忘记了 .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']
我有这样一本字典:
>>> pprint.pprint(d) {'a': ('abc', 'pqr', 'xyz'), 'b': ('abc', 'lmn', 'uvw'), 'c': ('efg', 'xxx', 'yyy')}
现在,给定一个变量 x
,我希望能够列出字典中元组中第一个元素等于 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
我该如何纠正?
你快到了,只是忘记了 .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']