如何通过单一条目从dict获取单个值?

时间:2017-04-26 08:50:02

标签: python python-3.x dictionary

我看到How to extract dictionary single key-value pair in variables暗示:

d = {"a":1}
(k, v), = d.items()

但是:我只关心。我想把这个值传递给一个方法;像:

foo(v)

所以问题是:是否有一个简单的命令适用于python2和python3,它直接给我这个值,而没有绕过" tuple"分配?

或者有没有办法让元组赋值适用于我调用方法的用法?

4 个答案:

答案 0 :(得分:7)

list(d.values())[0]将评估为1。 正如评论中所指出的,仅在python3中需要转换为list

next(iter(d.values()))是另一种可能性(可能更有效,因为您不需要创建列表)

两个解决方案都在本地使用python 3.6.0和TIO with python 2进行测试。

答案 1 :(得分:2)

next(iter(d.values()))是从字典中提取唯一值的自然方法。无需转换为list即可提取唯一的元素。

它还执行了最好的可用选项(在Python 3.6上测试):

d = [{'a': i} for i in range(100000)]

%timeit [next(iter(i.values())) for i in d]  # 50.1 ms per loop
%timeit [list(i.values())[0] for i in d]     # 54.8 ms per loop
%timeit [list(i.values()).pop() for i in d]  # 81.8 ms per loop

答案 2 :(得分:1)

如果您知道密钥,那么您可以这样做:

d["a"] 
output :
1

如果您不知道密钥:

for key in d.keys():
d[key]

#so basically you have to do :

for key in d.keys():
f00(d[key])

答案 3 :(得分:1)

  

是否有一个简单的命令,适用于python2和python3   直接给了我这个价值,没有绕过“元组”   分配

使用dict.copy()(保留原始字典)和dict.popitem()函数的解决方案:

d = {"a":1}
foo(d.copy().popitem()[1])