我看到How to extract dictionary single key-value pair in variables建议:
d = {"a":1}
(k, v), = d.items()
但是:我只关心 value,而且我想把这个值传递给一个方法;例如:
foo(v)
所以问题是:有没有一个简单的命令可以同时适用于python 2和python3,它可以直接给我这个值,而不需要经过“tuple”赋值的弯路?
或者有没有一种方法可以让元组赋值为我调用方法的用例所用?
我看到How to extract dictionary single key-value pair in variables建议:
d = {"a":1}
(k, v), = d.items()
但是:我只关心 value,而且我想把这个值传递给一个方法;例如:
foo(v)
所以问题是:有没有一个简单的命令可以同时适用于python 2和python3,它可以直接给我这个值,而不需要经过“tuple”赋值的弯路?
或者有没有一种方法可以让元组赋值为我调用方法的用例所用?
7条答案
按热度按时间8fq7wneg1#
list(d.values())[0]
将被计算为1。正如注解中所指出的,只有在python3中才需要转换为list
。next(iter(d.values()))
是另一种可能性(可能更节省内存,因为您不需要创建列表)这两种解决方案都在本地使用python 3.6.0进行测试,并在TIO中使用python 2进行测试。
9o685dep2#
next(iter(d.values()))
是从字典中提取唯一值的自然方法。转换为list
只是为了提取唯一元素是没有必要的。它也是可用选项中最好的(在Python 3.6上测试):
oxosxuxt3#
有没有办法让元组赋值为我的用例工作
扩展解包将在Python 3中完成这项工作,如果
d
为空,则ValueError: Not enough values to unpack
将失败。扩展解包在Python 2中不可用。wribegjk4#
如果你知道密钥,那么你可以简单地做:
如果你不知道答案:
bfnvny8b5#
使用
more_itertools.one
比较短,而且还验证是否存在单个条目qkf9rpyu6#
有没有一个简单的命令可以同时适用于python2和python3,它可以直接给我这个值,而不需要经过“tuple”赋值的弯路?
使用
dict.copy()
(保留原始dict)和dict.popitem()
函数的解决方案:cyvaqqii7#
对于
foo(v)
用例,您可以直接将值解包到调用中:演示:
输出(Attempt This Online!):