[英]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
產生一個元組。
但是,僅更改items
的values
將覆蓋您新生成的字典(此外,不會導致您想要的結果)。
>>> {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.