首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从这个元组字典中检索值

从这个元组字典中检索值
EN

Stack Overflow用户
提问于 2015-01-13 04:49:16
回答 3查看 104关注 0票数 0

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

代码语言:javascript
复制
names_dict = {0: ('CV', '4'), 1: ('PR', '8'), 2: ('SC', '2'), 3: ('SR', '3'), 4: ('SP', '7'), 5: ('Temperature', '1')}

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

代码语言:javascript
复制
name = 'Temperature'

我有一个函数retrieve_value(names_dict , name),当名称是'Temperature'时,函数返回1,如果名称是'SP',则函数返回7。

如何在python中完成该函数?我正在使用python 2.7.9

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-13 04:52:43

就像这样:

代码语言:javascript
复制
>>> next((value[1] for value in names_dict.values() if value[0]==name), None)
'1'

创建一个函数:

代码语言:javascript
复制
>>> 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'
票数 4
EN

Stack Overflow用户

发布于 2015-01-13 05:00:14

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

代码语言:javascript
复制
>>> next(value[1] for value in names_dict.itervalues() if value[0] == 'CV')
'4'

如果找不到您提供的键,则会引发StopIteration,但如果您愿意,则可以添加默认设置:

代码语言:javascript
复制
>>> next((value[1] for value in names_dict.itervalues() if value[0] == 'XXX'), None)
>>>
票数 4
EN

Stack Overflow用户

发布于 2015-01-13 05:04:42

您可以使用迭代dict的值,它返回包含dict值的列表,就像@Hackaholic回答的那样。

如果dict太大,dict.values可能效率很低,请使用dict.itervalues,它会在dict的值上返回迭代器,而不是list。

在python3中,情况发生了变化。dict.values返回迭代器,但不再返回列表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27915062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档