簡體   English   中英

將整數列表放入現有字典中

[英]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

您可以使用tuplelist作為每個相應山脈的值

每個索引將定義測量單位

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM