从字典中的多个值中获取单个值

2024-04-26 22:52:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本这样的字典

dic={10:(1,4),20:(2,4),30:(3,4)}

如何在不使用for循环的情况下使用dic.values()获得{}作为输出。在


Tags: for字典情况valuesdic
3条回答

答:你不能。你得查字典:

for v in d.values():
    print v[0]

或者使用列表理解:

^{pr2}$

此筛选方法是您能找到的最佳方法:)

这是有效的:

>>> dic={10:(1,4),20:(2,4),30:(3,4)}
>>> [x[0] for x in dic.values()]
[1, 2, 3]
>>> # Or if you want that as a tuple
>>> tuple(x[0] for x in dic.values())
(1, 2, 3)
>>> # Or a string
>>> ",".join([str(x[0]) for x in dic.values()])
'1,2,3'
>>>

不过,你应该记住,字典的顺序是不能保证的。也就是说,键/值对的顺序并不总是与放入它们的顺序相同。在

要按您想要的顺序得到无序的结果,您应该查看^{}。在

如果你看什么dic.值()产生:

>>> dic={10:(1,4),20:(2,4),30:(3,4)}
>>> dic.values()
[(1, 4), (2, 4), (3, 4)]

显然,您需要每个元组的第一个元素。在

您可以使用zip在不循环1的情况下获得它。在

^{pr2}$

正如评论中指出的,更有效的解决方案是:

>>> from itertools import izip
>>> next(izip(*dic.itervalues()))
(1, 2, 3)

然后,您不必一直创建多个列表来获取第一个元素。在

当然,顺序取决于驾驶员信息中心(dic)中按键的顺序。在

1在我看来,“没有循环”是一个愚蠢的区别。每个解决方案都有一个显式或隐式循环。。。在

相关问题 更多 >