虛構資料:
list_1 = ["Harry", "Harry", "Harry", "Ron" , "Ron" , "Ron", "Fred","Fred, "George", "Jerry"]
list_2 = [158, 167, 145, 177, 187, 190, 167, 187, 190, 177]
所以,在我的list_2(身高)中對應的list_1順序相同。而且我正在嘗試僅提取組合字典中每個名稱的最大高度。
這樣我的輸出應該給我:
combined_dictionary = {"Harry" : 167, "Ron" : 190, "Fred":187, "George":190,"Jerry":177}
我的代碼是:
combined_dictionary = dict(zip(list_1, list_2)
這給了我一個組合字典,但沒有最大高度。
然后,我嘗試了:
max(combined_dictionary.values())
但這顯然只是從我已經在上面創建的(有缺陷的)組合字典中獲取單個值。
我知道我在這里遺漏了一些明顯的東西,不知道是什么
uj5u.com熱心網友回復:
這是最簡單的方法,我認為:
>>> combined_dictionary = {}
>>> for name, height in zip(list_1, list_2):
... combined_dictionary[name] = max(combined_dictionary.get(name, 0), height)
...
>>> combined_dictionary
{'Harry': 167, 'Ron': 190, 'Fred': 187, 'George': 190, 'Jerry': 177}
如果您想對除獲取之外的所有高度做一些事情max,更好的方法可能是首先將它們累積到串列的字典中:
>>> combined_dictionary = {name: [] for name in list_1}
>>> for name, height in zip(list_1, list_2):
... combined_dictionary[name].append(height)
...
>>> combined_dictionary = {name: max(heights) for name, heights in combined_dictionary.items()}
>>> combined_dictionary
{'Harry': 167, 'Ron': 190, 'Fred': 187, 'George': 190, 'Jerry': 177}
uj5u.com熱心網友回復:
您需要遍歷串列中的每個元素并使用max()來保留看到的最高高度:
import math
list_1 = ["Harry", "Harry", "Harry", "Ron" , "Ron" , "Ron", "Fred","Fred", "George", "Jerry"]
list_2 = [158, 167, 145, 177, 187, 190, 167, 187, 190, 177]
max_values = {}
for name, height in zip(list_1, list_2):
max_values[name] = max(height, max_values.get(name, -math.inf))
# Prints {'Harry': 167, 'Ron': 190, 'Fred': 187, 'George': 190, 'Jerry': 177}
print(max_values)
uj5u.com熱心網友回復:
您可以通過以下方式實作您想要的:
heights_dict = {}
for i, item in enumerate(list_1):
if item not in heights_dict:
heights_dict[item] = list_2[i]
continue
if heights_dict[item] < list_2[i]:
heights_dict[item] = list_2[i]
print(heights_dict)
{'Harry': 167, 'Ron': 190, 'Fred': 187, 'George': 190, 'Jerry': 177}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/430287.html
上一篇:如何正確地將字串串列添加到字典
下一篇:一行輸出串列資料
