Python 对现有列表使用namedtuples

Python 对现有列表使用namedtuples,python,Python,这是一个家庭作业问题。我很确定我需要使用namedtuples 我有如下数据列表: data = [["first", "last", "info", "info", "info"],["first m.", "last", "info", "info", "info"]...] output = { "last1" : ["info","info","info","info","info","info"], "last2": ["info","info","info"]...} 我们的

这是一个家庭作业问题。我很确定我需要使用namedtuples

我有如下数据列表:

data = [["first", "last", "info", "info", "info"],["first m.", 
"last", "info", "info", "info"]...]
output = { "last1" : ["info","info","info","info","info","info"], 
"last2": ["info","info","info"]...}
我们的目标是创建一个包含所有类似姓氏的词典——即Smith上的group。不包括名字

output = { "last1": [["info","info","info"], 
["info","info","info"]], "last2": [["info","info","info"]]...}
这就是我所尝试的:

facultyByLastname = defaultdict(list)
    for first, last, info, info, info in facultyData:
         facultyByLastname[last].append(info)
         facultyByLastname[last].append(info)
         facultyByLastname[last].append(info)
输出就快到了,但我怀疑我是否正确地使用了namedtuples。我很抱歉,输出如下所示:

data = [["first", "last", "info", "info", "info"],["first m.", 
"last", "info", "info", "info"]...]
output = { "last1" : ["info","info","info","info","info","info"], 
"last2": ["info","info","info"]...}
它不会将个人的数据保留在他们的列表中,而是将他们解组并将所有具有相同姓氏的数据粘贴在单个列表中


我卡住了,需要帮助

这不需要命名元组或默认字典。主要问题是列表的分解方式:

 for first, last, info, info, info in facultyData:
不清楚您希望变量信息在这里保存什么。相反,您可以通过以下方式获取列表的其余部分:

for first, last, *info in facultyData:
然后,如果字典中不存在条目,则可以使用在字典中创建条目:

data = [["first", "last", "info", "info", "info"],["first m.", "last2", "info", "info", "info"], ["first m.", "last", "info", "info", "info"]]

facultyByLastname = {}

for first, last, *info in data:
   facultyByLastname.setdefault(last, []).append(info)
​ 结果


我在你的代码中看不到namedtuples的任何用途。似乎你在使用字典,而不是namedtuples。字典中的所有键都必须是唯一的。也就是说,字典中不能有两个键作为“Smith”。也许你不需要追加,而只需要赋值?在这种情况下,你可以使用普通的口述。但在这种情况下,同名的人会覆盖彼此的信息数据。谢谢你解释我的帖子!这很有效。非常感谢