在下面的my_list中使用列表对列表,我如何创建一个新列表,在该列表中,普通element [0]值将具有其相应element [1]值的列表?主列表中元素的顺序无关紧要。
示例
my_list = [['color', 'red'], ['length', 2], ['color', 'blue], ['shape', 'circle'], ['shape', 'square']]
return [['color', ['red', 'blue']], ['shape', ['circle', 'square']], ['length', 2]]
答案 0 :(得分:2)
如果您不介意按键的顺序,则可能要使用默认字典。
my_list = [['color', 'red'], ['length', 2], ['color', 'blue'], ['shape', 'circle'], ['shape', 'square']]
from collections import defaultdict
d = defaultdict(list)
for sublist in my_list:
d[sublist[0]].append(sublist[1])
print(d)
如果您绝对希望将其作为您指定的列表
answer = []
for key in d:
if len(d[key]) == 1:
answer.append([key, d[key][0]])
else:
answer.append([key, d[key]])
print(answer)