我試圖從列表字典中返回所有最大值。查找列表字典的多個最大值
my_dict = { 111: [50, 2, 34], 122: [50 , 4, 45], 133: [40, 1, 12], 144: [20, 5, 7]}
maxima = max(my_dict.items(), key=operator.itemgetter(1))[0]
這隻返回'122',而不是'111'和'122'。我怎樣才能修改這個來返回兩個鍵?
我試圖從列表字典中返回所有最大值。查找列表字典的多個最大值
my_dict = { 111: [50, 2, 34], 122: [50 , 4, 45], 133: [40, 1, 12], 144: [20, 5, 7]}
maxima = max(my_dict.items(), key=operator.itemgetter(1))[0]
這隻返回'122',而不是'111'和'122'。我怎樣才能修改這個來返回兩個鍵?
我想也許這就是你想要的?這也跟蹤my_dict中每個鍵的最大值。
maxima = {}
my_dict = { 111: [50, 2, 34], 122: [50 , 4, 45], 133: [40, 1, 12], 144: [20, 5, 7]}
for key in my_dict:
maxima[key] = max(my_dict[key])
max_keys = [key for key in maxima if maxima[key] == max(maxima.values())]
print max_keys
要根據列表中的項目的最高你可以做排序列表:
print(sorted(my_dict.keys(),key=lambda x: max(my_dict[x])))
你得到[144, 133, 122, 111]
但不會告訴你哪些鍵承擔其相關聯的最高值名單。
所以,你必須執行,在2步:在列表中
這樣的實例列表鍵的所有值的
my_dict = { 111: [50, 2, 34], 122: [50 , 4, 45], 133: [40, 1, 12], 144: [20, 5, 7]}
max_value = max(x for l in my_dict.values() for x in l) # flat max of values
或者如果你想計算一個特定的最大值R值給出其位置,例如第一個:
max_value = max(l[0] for l in my_dict.values())
然後從字典中提取與過濾器:
print([k for k,v in my_dict.items() if max_value in v]) # keys whose value contain the max
結果:
[122, 111]
雖然這不是答案,列表,元組等進行比較**按字典順序**。 –