Python:如何在列表中合并内容?
我有以下清单:Python:如何在列表中合并内容?,python,list,Python,List,我有以下清单: >>> list_of_list = [ ['a', 2], ['b', 3], ['a', 4, 5] ] 我希望得到以下结果: 1.它可以告诉我有两个不同的项目:“a”和“b” 2.“a”中有2项,“b”中有1项 “a”=[2,4,5] “b”=3 谢谢您可以(应该)使用字典,将每个子列表中的第一项(“键”)映射到每个子列表中的第二项(“值”) 使用defaultdict可以省去用空列表实例化每个新密钥的麻烦 此外,正如eumiro所指出的,为了保持一
>>> list_of_list = [ ['a', 2], ['b', 3], ['a', 4, 5] ]
我希望得到以下结果:
1.它可以告诉我有两个不同的项目:“a”和“b”
2.“a”中有2项,“b”中有1项
“a”=[2,4,5]
“b”=3
谢谢您可以(应该)使用字典,将每个子列表中的第一项(“键”)映射到每个子列表中的第二项(“值”)
使用defaultdict
可以省去用空列表实例化每个新密钥的麻烦
此外,正如eumiro所指出的,为了保持一致,'b'
的值应该是一个包含单个项目3
的列表,而不仅仅是数字3
from collections import defaultdict
d = defaultdict(list)
for item in list_of_list:
d[item[0]].append(item[1])
伟大的现在向OP解释,保持字典中的值一致是一个好主意(即
d['b']
应该是[3]
,而不是3
)。@eumiro:我不认为这是必要的,他/她可能会很难学会:)回答得好,+1来自我,但解释也会很好。谢谢,但我尝试了d[item][0]].追加(项目[1:])但效果不太好。@Winston如果您不断更新您的问题,我建议的解决方案适用于原始版本。将其调整为适用于包含两个以上项目的子列表并不困难,请仔细考虑。有趣的方式是:dict((x,[z[1]表示y中的z])表示x,y表示groupby(排序(lst),lambda x:x[0]))
您需要什么