我是一位编码经验有限的Python新手,这是我在这个网站上的第一个问题。我真的希望有人可以帮助我。
我正在使用一些新的和一些以前存在的代码。在以前的现有代码中:
members is established as a list array of names
groupID is the ID number for the group
对于新代码,我需要跟踪行中的成员名称,并在新代码中添加其他信息。我试图用嵌套字典来做这件事。
为了说明这种情况:
groupID = 02
members = ['John', 'Paul', 'George', 'Ringo']
memberDetails = {'group': groupID,
'currentMembers': {'name': members, 'age': 30, 'sex': 'Male', 'hometown': 'City'}
}
print memberDetails
此时我并不关心年龄,性别和家乡的价值观,我稍后会更新这些数据,然后使用字典中的键进一步操作数据。
上面的代码返回:
{'group': 2, 'currentMembers': {'hometown': 'City', 'age': 30, 'name': ['John', 'Paul', 'George', 'Ringo'], 'sex': 'Male'}}
我需要它分成行,例如:
{'group': 2, 'currentMembers': {'hometown': 'City', 'age': 30, 'name': 'John', 'sex': 'Male'}}, {'group': 2, 'currentMembers': {'hometown': 'City', 'age': 30, 'name': 'Paul', 'sex': 'Male'}}, {'group': 2, 'currentMembers': {'hometown': 'City', 'age': 30, 'name': 'George', 'sex': 'Male'}}, {'group': 2, 'currentMembers': {'hometown': 'City', 'age': 30, 'name': 'Ringo', 'sex': 'Male'}}
这样我就可以根据会员的名字跟踪故乡和其他细节。如果它以与我在字典中输入的顺序相同的顺序返回,它看起来会更好看,但这并不重要,只要我可以使用'名称来存储和检索数据。键。
我在定义词典后尝试使用此行拆分列表:
memberDetails['currentMembers'].update({'name': members.split(", ")})
然而,我收到此错误:
AttributeError: 'list' object has no attribute 'split'
我觉得我已经接近了:
for i in members:
memberDetails['currentMembers']['name'] = i
这让我得到一个名字,但只有一行:
{'group': 2, 'currentMembers': {'hometown': 'City', 'age': 30, 'name': 'Ringo', 'sex': 'Male'}}
有关如何修复此词典或使用其他解决方案完成目标的任何建议?
答案 0 :(得分:0)
groupID = 02
members = ['John', 'Paul', 'George', 'Ringo']
memberDetails = [{
'group': 2,
'currentMembers':{
'name': member,
'age': 30,
'sex': 'male',
'hometown': 'City'
}
}for member in members]
print memberDetails
答案 1 :(得分:0)
这里的代码
group = {'group': 2}
members = ['John', 'Paul', 'George', 'Ringo']
current_members = []
memberDetails = {
'age': 30,
'sex': 'male',
'hometown': 'City'
}
for name in members:
newMember = memberDetails.copy()
newMember['name'] = name
current_members.append(newMember)
group['current_members'] = current_members
print group
将在下面输出。它更小,更少冗余
{
'current_members': [
{'hometown': 'City', 'age': 30, 'name': 'John', 'sex': 'male'},
{'hometown': 'City', 'age': 30, 'name': 'Paul', 'sex': 'male'},
{'hometown': 'City', 'age': 30, 'name': 'George', 'sex': 'male'},
{'hometown': 'City', 'age': 30, 'name': 'Ringo', 'sex': 'male'}
],
'group': 2
}
您获得1行的原因是因为循环使用新名称覆盖了以前的名称。通过将memberDetails复制到newMember字典,您可以添加新名称,然后将其附加到current_members列表。通过这种方式,您可以获得每个成员的详细信息