扁平化具有多个键值对的字典列表

3

我有一个包含多个键值对的字典列表

list_dict = [{'id': 1, 'name': 'sana'}, {'id': 2, 'name': 'art'}, {'id': 3, 'name': 'tiara'}]

我希望将这个格式转换成这个格式:

final_dict = {1: 'sana', 2: 'art', 3: 'tiara'}

我一直在尝试使用字典推导式,但它并不起作用。以下是我能做到的最好结果:

{k:v for d in list_dict for k, v in d.items()}
4个回答

8
你不需要使用d.items(),只需访问每个字典中的idname属性即可。
{d['id']: d['name'] for d in list_dict}

3

对于列表中的每个元素,您希望d ["id"]成为键,d ["name"] 成为值,因此字典推导式应如下所示:

{d["id"]: d["name"] for d in list_dict}

3
你可以尝试。
final_dict={} 
for dico in list_dict:
    final_dict[dico['id']] = dico['name'] 

2

你可以用几种不同的方法来实现这个功能。下面是使用pandas数据帧进行简单实现的一种不错的方法:

import pandas as pd
df = pd.DataFrame(list_dict) # <- convert to dataframe
df = df.set_index('id') # <- set the index to the field you want as the key
final_dict = df['name'].to_dict() # <- convert the series 'name' to a dict
print(final_dict)

{1: 'sana', 2: 'art', 3: 'tiara'}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接