Python从列表和元组创建字典

2024-10-06 09:58:11 发布

您现在位置:Python中文网/ 问答频道 /正文

当我像这样迭代字典时:

dict2={
'Joe':('Caucasian','Male', 35, 7.5),
'Kevin':('Black','Male', 55, 9.5),
 More tuples here like the one above
}

数据更大,但这并不重要

我试图完成的是用元组中的信息创建一个新词典。像这样:

dict_i_want = {
  "Name": Joe, 
  "Ethiniticy": "Caucasian", 
  "Gender":"Male",
  "Voter_age": 35, 
  "Score": 7.5
}  

这是我的密码:

dict_i_want = {}
for k,v in dict2.items():
    dict_i_want["Name"] = k
    dict_i_want['Ethiniticy'] = v[0]
    dict_i_want['Gender'] = v[1]
    dict_i_want['Voter_age'] = v[2]
    dict_i_want['Score'] = v[3]

但当我这么做的时候

print(dict_i_want)
{'Name': 'Kevin', 'Ethiniticy': 'Black', 'Gender': 'Male', 'Voter_age': 55, 'Score': 9.5}


结果就是mydict2中的最后一个元组。不是所有的元组。 如果我有循环,我做错了什么

PS:我不想在这里使用任何模块或导入任何内容。没有像zip()之类的内置函数。我想硬编码解决方案


Tags: nameagegenderdictmale元组blackscore
2条回答

@ForceBru回答了您的问题-您最好的选择是词典列表,除非您希望为每个子词典创建具有唯一键的词典。使用列表方法,您可以执行以下操作:

例如:

from pprint import pprint

dict2 = {
    'Joe': ('Caucasian', 'Male', 35, 7.5),
    'Kevin': ('Black', 'Male', 55, 9.5),
}

dicts_i_want = [
    {"name": name, "ethnicity": ethnicity, "gender": gender, "voter_age": voter_age, "score": score}
    for name, (ethnicity, gender, voter_age, score) in dict2.items()
]
pprint(dicts_i_want)

输出:

[{'ethnicity': 'Caucasian',
  'gender': 'Male',
  'name': 'Joe',
  'score': 7.5,
  'voter_age': 35},
 {'ethnicity': 'Black',
  'gender': 'Male',
  'name': 'Kevin',
  'score': 9.5,
  'voter_age': 55}]

Dict键必须是唯一的。您只是在循环的每个周期中覆盖您的dict。这就是dicts的工作原理

相关问题 更多 >