如何将具有相同字符串的嵌套列表附加在一起?
How to append nested lists with same string together?
我有一个如下所示的嵌套列表:
list = [['bob', '12'], ['jim', '14'], ['bob', '13']]
我正在尝试获得以下输出:
list = [['bob', '12', '13'], ['jim', '14']]
有什么办法可以实现。我只能截断嵌套的点亮以删除值,但不能将它们添加到另一个列表中。任何帮助,将不胜感激。谢谢。我尝试了以下方法:
i = 0
while i < len(list):
find = list[i][0]
for a, b in list:
if find == a:
list[i]].append(b)
i += 1
一种选择是在合并列表时使用临时字典:
tmp = {}
for name, num in lst:
if name in tmp:
tmp[name].append(num)
else:
tmp[name] = [name, num]
out = list(tmp.values())
输出:
[['bob', '12', '13'], ['jim', '14']]
作为旁注,当您使用 list
作为变量名时,您不能在之后使用 list()
构造函数,因为变量名会隐藏它。所以最好给你的变量起个别的名字。我这里命名为lst
一个肮脏的衬垫:-D
[[k,*v] for k,v in {_ld:[_l[1] for _l in l if _l[0]==_ld] for _ld in {_l[0] for _l in l }}.items()]
我有一个如下所示的嵌套列表:
list = [['bob', '12'], ['jim', '14'], ['bob', '13']]
我正在尝试获得以下输出:
list = [['bob', '12', '13'], ['jim', '14']]
有什么办法可以实现。我只能截断嵌套的点亮以删除值,但不能将它们添加到另一个列表中。任何帮助,将不胜感激。谢谢。我尝试了以下方法:
i = 0
while i < len(list):
find = list[i][0]
for a, b in list:
if find == a:
list[i]].append(b)
i += 1
一种选择是在合并列表时使用临时字典:
tmp = {}
for name, num in lst:
if name in tmp:
tmp[name].append(num)
else:
tmp[name] = [name, num]
out = list(tmp.values())
输出:
[['bob', '12', '13'], ['jim', '14']]
作为旁注,当您使用 list
作为变量名时,您不能在之后使用 list()
构造函数,因为变量名会隐藏它。所以最好给你的变量起个别的名字。我这里命名为lst
一个肮脏的衬垫:-D
[[k,*v] for k,v in {_ld:[_l[1] for _l in l if _l[0]==_ld] for _ld in {_l[0] for _l in l }}.items()]