2

我如何找到存储在字典中的多个并行比较的元组的最大值。

d = {'one':(2,9,6), 'two':(7,2,1), 'three':(1,5,12)}

因此,元组 (2,9,6),(7,2,1) 和 (1,5,12) 'zipped' 会产生最大值,即 (7,9,12)。

请帮忙指教。

(为数字混淆而编辑)

4

2 回答 2

2

从您的问题中我不能完全确定您在寻找什么,但 zip 部分让我认为这就是您想要的:

d = {'one':(1,2,3), 'two':(3,2,1), 'three':(4,5,6)}
tuple(max(x) for x in zip(*d.values()))

这实际上将元组压缩在一起(第一个元组的第一个元素与第二个元组的第一个元素等等),然后找到每个压缩元组的最大值。

于 2012-06-01T04:53:24.233 回答
2
d = {'one':(2,9,6), 'two':(7,2,1), 'three':(1,5,12)}
tuple(map(max, *d.values()))

$ python -m timeit -s"d = {'one':(2,9,6), 'two':(7,2,1), 'three':(1,5,12)}"\
                     "tuple(map(max, *d.values()))"
1000000 loops, best of 3: 1.08 usec per loop
$ python -m timeit -s"d = {'one':(2,9,6), 'two':(7,2,1), 'three':(1,5,12)}"\
                     "tuple(max(x) for x in zip(*d.values()))"
100000 loops, best of 3: 2.1 usec per loop
于 2012-06-01T05:22:51.437 回答