簡體   English   中英

從字典列表到使用值作為鍵/值對的單個字典

[英]From list of dict to single dict using values as key/value pairs

從 JSON 輸入,我有一個字典列表,它們都使用相同的鍵:

[{'id': '1', 'country': 'Brazil'},
 {'id': '2', 'country': 'Spain'},
 {'id': '3', 'country': 'South Korea'},
 {'id': '4', 'country': 'United States'},
 {'id': '5', 'country': 'Italy'}]

由於我需要一種簡單的方法來從任何country /地區名稱中獲取id值,因此我想將其轉換為一個字典:

{'Brazil': 1, 'Spain': 2, 'South Korea': 3, 'United States': 4, 'Italy': 5}

我以為我可以通過字典理解來做到這一點:

countries = {k:v for d in my_list for (k, v) in d.values()}

但是,這會產生:

ValueError: too many values to unpack (expected 2)

這是我沒想到的,因為d.values()應該只返回兩個項目。

我錯過了什么?

正如評論中指出的那樣, dict.items產生一個元組。

但是,僅更改itemsvalues將覆蓋您新生成的字典(此外,不會導致您想要的結果)。

>>> {k:v for item in my_list for (k,v) in item.items()}
{'id': '5', 'country': 'Italy'}

相反,您必須指定所需的鍵。

>>> {item['country']:item['id'] for item in my_list}
{'Brazil': '1', 'Spain': '2', 'South Korea': '3', 'United States': '4', 'Italy': '5'}

您可以將值作為元組獲取並將其反轉。 然后你可以將它們傳遞給 dict 調用來創建你的新字典。

my_list = [{'id': '1', 'country': 'Brazil'},
 {'id': '2', 'country': 'Spain'},
 {'id': '3', 'country': 'South Korea'},
 {'id': '4', 'country': 'United States'},
 {'id': '5', 'country': 'Italy'}]


countries = dict(tuple(d.values())[::-1] for d in my_list)
print(countries)

OUTPUT

{'Brazil': '1', 'Spain': '2', 'South Korea': '3', 'United States': '4', 'Italy': '5'}

暫無
暫無

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

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