我如何找到存储在字典中的多个并行比较的元组的最大值。
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)。
请帮忙指教。
(为数字混淆而编辑)
我如何找到存储在字典中的多个并行比较的元组的最大值。
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)。
请帮忙指教。
(为数字混淆而编辑)
从您的问题中我不能完全确定您在寻找什么,但 zip 部分让我认为这就是您想要的:
d = {'one':(1,2,3), 'two':(3,2,1), 'three':(4,5,6)}
tuple(max(x) for x in zip(*d.values()))
这实际上将元组压缩在一起(第一个元组的第一个元素与第二个元组的第一个元素等等),然后找到每个压缩元组的最大值。
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