[英]Putting a list of integers into an existing dictionary
這是來自http://introtopython.org/dictionaries.html的“高山高地 3”練習的獎勵部分。
我有這本字典,上面顯示了 5 座山脈及其高度(以米為單位)。
mountains_meters = {'Mount Everest' : 8848,
'K2' : 8611,
'Kangchenjunga' : 8586,
'Lhotse' : 8516,
'Makalu' : 8485,
}
並且問題要求定義一個 function 讀取以米為單位的高度並返回以英尺為單位的高度列表,給定轉換 1 米 = 3.28 英尺。
feet = []
def meters_to_feet(dictionary):
for value in dictionary.values():
feet.append(round(value * 3.28))
然后問題要求創建一個嵌套字典,其結構為 {'everest': [8848, 29021]}
我不確定如何將我的英尺高度列表放入現有的 mountain_meters 字典中。
[29021, 28244, 28162, 27932, 27831]
進入
mountains_meters = {'Mount Everest' : 8848,
'K2' : 8611,
'Kangchenjunga' : 8586,
'Lhotse' : 8516,
'Makalu' : 8485,
}
你為什么不在一個循環中做呢?
for k,v in mountains_meters.items():
mountains_meters[k] = [v, round(v*3.28)]
feet.append(round(v * 3.28))
方法 - 1
您可以使用tuple
或list
作為每個相應山脈的值
每個索引將定義測量單位
from pprint import pprint
mountains_meters = {'Mount Everest' : 8848,
'K2' : 8611,
'Kangchenjunga' : 8586,
'Lhotse' : 8516,
'Makalu' : 8485,
}
for key in mountains_meters:
meters = mountains_meters[key]
feet = round(meters* 3.28)
mountains_meters[key] = (meters,feet)
>>> pprint(mountains_meters)
{'K2': (8611, 28244),
'Kangchenjunga': (8586, 28162),
'Lhotse': (8516, 27932),
'Makalu': (8485, 27831),
'Mount Everest': (8848, 29021)}
方法 - 2
您可以創建一個輔助Dictionary
來保存腳轉換
from pprint import pprint
mountains_meters = {'Mount Everest' : 8848,
'K2' : 8611,
'Kangchenjunga' : 8586,
'Lhotse' : 8516,
'Makalu' : 8485,
}
mountains_feets = {}
for key in mountains_meters:
meters = mountains_meters[key]
feet = round(meters* 3.28)
mountains_feets [key] = feet
>>> pprint(mountains_feets)
{'K2': 28244,
'Kangchenjunga': 28162,
'Lhotse': 27932,
'Makalu': 27831,
'Mount Everest': 29021}
你可以這樣做:
def m_to_feet(m):
return round(3.28 * m)
nested_dict = {}
for mountain, height_m in mountains_meters.items():
nested_dict[mountain] = [height_m, m_to_feet(height_m)]
或者在具有 dict 理解的簡短單行器中:
def m_to_feet(m):
return round(3.28 * m)
nested_dict = {k: [v, m_to_feet(v)] for k, v in mountains_meters.items()}
def h_f(mountains):
for key, value in mountains.items():
mountains[key] = [value, round(value*3.28)]
return mountains
mountains_meters = {'Mount Everest': 8848,
'K2': 8611,
'Kangchenjunga': 8586,
'Lhotse': 8516,
'Makalu': 8485,
}
print(h_f(mountains_meters))
Output
{'Mount Everest': [8848, 29021], 'K2': [8611, 28244], 'Kangchenjunga': [8586, 28162], 'Lhotse': [8516, 27932], 'Makalu': [8485, 27831]}
for i, k in enumerate(mountains_meters):
mountains_meters[k] = [mountains_meters[k], feet[i]]
>>> mountains_meters
{'Mount Everest': [8848, 29021], 'K2': [8611, 28244], 'Kangchenjunga': [8586, 28162], 'Lhotse': [8516, 27932], 'Makalu': [8485, 27831]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.