我看到How to extract dictionary single key-value pair in variables暗示:
d = {"a":1}
(k, v), = d.items()
但是:我只关心值。我想把这个值传递给一个方法;像:
foo(v)
所以问题是:是否有一个简单的命令适用于python2和python3,它直接给我这个值,而没有绕过" tuple"分配?
或者有没有办法让元组赋值适用于我调用方法的用法?
答案 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])