python: max value in a dictionary with 2 keys

南楼画角 提交于 2019-12-24 01:57:24

问题


I have a dictionary D set up as D={('a','b'):['1000','5','.3'], ('c','d'):['2000','8','-.8']} where ('a','b') and ('c','d') are the keys. I am having trouble finding the maximum of the first values in the lists. So in using max(D) I need it to return ('c','d'). Keep in mind my list is hundreds of pairings. I just need to have the max() function be able to recognize the first value '2000' and '1000' and find the maximum of those. Any help or suggestions would be greatly appreciated.


回答1:


You need to iterate through the dictionary, converting the first value's item to an int, and saving them for later:

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



回答2:


python max function takes a key that you can use to define your function or 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])

output:

('c', 'd')

Explanation: In the code above, k will be the nth item/value pair as a tuple of your dictionary D. For first item k is (('a','b'),['1000','5','.3']). Then int(k[1][0]) returns 1000. We need to convert to int otherwise max will do string comparison.

Online link for above code: http://ideone.com/qmZvs8




回答3:


Taking your question literally, the max of '2000', '1000', etc is produced as follows

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

or

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

or

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

Interpreting your question to mean max of 2000, 1000, etc (int('2000'), int('1000')

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

Interpreting your question a bit more, to include wanting the key with the max first value:

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


来源:https://stackoverflow.com/questions/26833373/python-max-value-in-a-dictionary-with-2-keys

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!