[英]How to transform a dict array with multiple key values into a dict with single key value?
我有以下輸入數據
options_d = [{'id': 36, 'label': 'Angular'},
{'id': 37, 'label': 'Java'},
{'id': 38, 'label': 'PHP'},
{'id': 39, 'label': 'Python'},
{'id': 40, 'label': 'C#'},
{'id': 41, 'label': 'C'},
{'id': 42, 'label': '.NET'},
{'id': 43, 'label': 'Ruby'},
{'id': 44, 'label': 'Rails'},
{'id': 45, 'label': 'OS-Linux'},
{'id': 55, 'label': 'Maschinenbau'},
{'id': 56, 'label': 'Automotive'},
{'id': 57, 'label': 'Engineering'}]
我想把它變成
{36: 'Angular',
37: 'Java',
38: 'PHP',
39: 'Python',
40: 'C#',
41: 'C',
42: '.NET',
43: 'Ruby',
44: 'Rails',
45: 'OS-Linux',
55: 'Maschinenbau',
56: 'Automotive',
57: 'Engineering'}
到目前為止我做了什么
skillsmap_person = {}
for option in options_d:
skillsmap_person[option['id']] = option['label']
有用。 但是,我可以使用單行dict分配解決方案嗎?
有任何想法嗎?
使用dict comprehensions
創建dictionary
-
options_dict = {i['id']:i['label'] for i in options_d}
print(options_dict)
{36: 'Angular',
37: 'Java',
38: 'PHP',
39: 'Python',
40: 'C#',
41: 'C',
42: '.NET',
43: 'Ruby',
44: 'Rails',
45: 'OS-Linux',
55: 'Maschinenbau',
56: 'Automotive',
57: 'Engineering'}
為什么不用列表理解做dict
:
>>> dict([i.values() for i in options_d])
{36: 'Angular', 37: 'Java', 38: 'PHP', 39: 'Python', 40: 'C#', 41: 'C', 42: '.NET', 43: 'Ruby', 44: 'Rails', 45: 'OS-Linux', 55: 'Maschinenbau', 56: 'Automotive', 57: 'Engineering'}
>>>
或者對於較低版本(當字典無序時):
>>> dict([list(i.values())[::-1] for i in options_d])
{36: 'Angular', 37: 'Java', 38: 'PHP', 39: 'Python', 40: 'C#', 41: 'C', 42: '.NET', 43: 'Ruby', 44: 'Rails', 45: 'OS-Linux', 55: 'Maschinenbau', 56: 'Automotive', 57: 'Engineering'}
>>>
它簡單地遍歷字典列表,並得到字典的值,然后有一個外部dict(...)
使其成為字典,所以實際上,奇數索引值將是鍵,甚至索引值將是值。
options_d = [{'id': 36, 'label': 'Angular'},
{'id': 37, 'label': 'Java'},
{'id': 38, 'label': 'PHP'},
{'id': 39, 'label': 'Python'},
{'id': 40, 'label': 'C#'},
{'id': 41, 'label': 'C'},
{'id': 42, 'label': '.NET'},
{'id': 43, 'label': 'Ruby'},
{'id': 44, 'label': 'Rails'},
{'id': 45, 'label': 'OS-Linux'},
{'id': 55, 'label': 'Maschinenbau'},
{'id': 56, 'label': 'Automotive'},
{'id': 57, 'label': 'Engineering'}]
{elem['id'] : elem['label'] for elem in options_d}
得到你:
{36: 'Angular',
37: 'Java',
38: 'PHP',
39: 'Python',
40: 'C#',
41: 'C',
42: '.NET',
43: 'Ruby',
44: 'Rails',
45: 'OS-Linux',
55: 'Maschinenbau',
56: 'Automotive',
57: 'Engineering'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.