从此元组字典中检索值

Retrieving value from this dictionary of tuples

我有一个看起来像这样的字典元组;

names_dict = {0: ('CV', '4'), 1: ('PR', '8'), 2: ('SC', '2'), 3: ('SR', '3'), 4: ('SP', '7'), 5: ('Temperature', '1')}

接下来我有这个变量告诉我要检索什么;

name = 'Temperature'

我有这个函数 retrieve_value(names_dict , name) 这样当名字是 'Temperature' 时,函数 returns 1. 如果名字是 'SP',函数 returns 7.

python中的功能如何实现?我正在使用 python 2.7.9

这样试试:

>>> next((value[1] for value in names_dict.values() if value[0]==name), None)
'1'

创建函数:

>>> def my_function(my_dict, name):
...     return next((value[1] for value in my_dict.values() if value[0]==name), None)
... 
>>> my_function(names_dict, 'Temperature')
'1'
>>> my_function(names_dict, 'SP')
'7'

您可以编写一个列表理解并检索第一个元素:

>>> next(value[1] for value in names_dict.itervalues() if value[0] == 'CV')
'4'

如果找不到您提供的密钥,将引发 StopIteration,但如果您愿意,可以添加默认值:

>>> next((value[1] for value in names_dict.itervalues() if value[0] == 'XXX'), None)
>>>

您可以使用 dict.values 遍历您的字典的 ,其中 returns 一个包含您的字典值的列表,就像@Hackaholic 回答的那样。

如果 dict 太大,dict.values 可能效率低下,请改用 dict.itervalues,returns 一个 iterator你的字典的值而不是 list

在python3中,情况发生了变化。 dict.values returns 一个迭代器,但不再是一个列表。