簡體   English   中英

如何將具有多個值的列表轉換成只有2個值的字典?

[英]How do i turn a list with multiple values into a dictionary with only 2 values?

我有一個名為country_population的列表,看起來像這樣:

[
  'Guam',
  {'total_population': {'date': '2013-01-01', 'population': 163943}},
  'Central%20African%20Republic',
  {'total_population': {'date': '2013-01-01', 'population': 4665025}}
]

我試着做dict(country_population)

這給了我以下錯誤:

ValueError: dictionary update sequence element #0 has length 4; 2 is required

我了解我的清單有4個值,但是如何將它變成只有2個值的字典? 我想要一個看起來像這樣的結果:

country_population = {'Guam' : '163943, 'Central%20African%20Republic' : 
'4665025' } 

使用dict()zip

演示:

country_population = ['Guam', {'total_population': {'date': '2013-01-01', 'population': 163943}}, 'Central%20African%20Republic', {'total_population': {'date': '2013-01-01', 'population': 4665025}}]
print(dict((i[0], i[1]['total_population']["population"])for i in zip(country_population[0::2], country_population[1::2])))

輸出:

{'Central%20African%20Republic': 4665025, 'Guam': 163943}

你可以試試:

my_list = ['Guam', {'total_population': {'date': '2013-01-01', 'population': 163943}}, 'Central%20African%20Republic', {'total_population': {'date': '2013-01-01', 'population': 4665025}}]
# dictionary to store new results
result = {}

for i in range(0, len(my_list), 2):
    result[my_list[i]] = my_list[i+1]['total_population']['population']

print(result)

結果:

{'Central%20African%20Republic': 4665025, 'Guam': 163943}

對於上面使用dictionary comprehension代碼,您可以嘗試:

result = {my_list[i] : my_list[i+1]['total_population']['population'] 
                                                for i in range(0, len(my_list), 2)}

您描述的結果無效,因為它具有多個名為NamePopulation鍵。 我認為您想要的是“ Name作為關鍵字,“ Population作為值,您可以通過以兩個為增量跳過列表並將每對加到字典中來實現。

d=dict()
for i in range(len(country_population)/2):
    d[country_population[2*i]] = 
        country_population[2*i+1]['total_population']['population']

d['Guam']將是163943。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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