python:具有2个键的字典中的最大值

时间:2014-11-09 21:09:10

标签: python-3.x dictionary max

我有一个字典D设置为D={('a','b'):['1000','5','.3'], ('c','d'):['2000','8','-.8']},其中('a','b')和('c','d')是键。我无法找到列表中第一个值的最大值。所以在使用max(D)时我需要它返回('c','d')。请记住,我的列表是数百个配对。我只需要让max()函数能够识别第一个值'2000'和'1000'并找到它们的最大值。任何帮助或建议将不胜感激。

3 个答案:

答案 0 :(得分:4)

python max function接受一个可用于定义函数或lambda的键。

D={('a','b'):['1000','5','.3'], ('c','d'):['2000','8','-.8']}
res=max(D.items(), key=lambda k: int(k[1][0]))
print(res[0])

<强>输出:

('c', 'd')

<强>说明: 在上面的代码中,k将是第n个项目/值对作为字典D的元组。对于第一个项目k是(('a','b'),['1000','5','.3'])。然后int(k[1][0])返回1000.我们需要转换为int,否则max将进行字符串比较。

以上代码的在线链接:http://ideone.com/qmZvs8

答案 1 :(得分:2)

您需要遍历字典,将第一个值的项转换为int,并保存它们以供日后使用:

first_values = []
for val in D.values():
    first_values.append(int(val[0]))
print(max(first_values))

答案 2 :(得分:0)

从字面上看你的问题,&#39; 2000&#39;&#39; 1000&#39;等的最大值产生如下

mx = max(val[0] for val in D.values())

from operator import itemgetter
mx = max(D.values(), key=itemgetter(0))[0

mx = max(D.values(), key=lambda val: val[0])[0]

将您的问题解释为最多2000,1000等(int(&#39; 2000&#39;),int(&#39; 1000&#39;)

mx = max(int(val[0]) for val in D.values())

更多地解释您的问题,包括想要具有最大第一个值的键:

mxpair = max(d.items(), key=lambda item: int(item[1][0]))
key, mx = mxpair[0], mxpair[1][0])