我有这个数组:
[['Amy', '2'],
['Amy', '2'],
['Amy', '1'],
['Yoyo', '1'],
['Yoyo', '2'],
['Yoyo', '2']]
Run Code Online (Sandbox Code Playgroud)
我想要这样:
[['Amy', ['2','2','1'],
['Yoyo',['1','2','2']]
Run Code Online (Sandbox Code Playgroud)
可能吗?我需要首先将其制成列表或词典吗?
您可以使用itertools.groupby和sorted。groupby的itertools基团连续匹配值。
data = [['Amy', '2'],
['Amy', '2'],
['Amy', '1'],
['Yoyo', '1'],
['Yoyo', '2'],
['Yoyo', '2']]
import itertools
def extract_key(v):
return v[0]
# itertools.groupby needs data to be sorted first
data = sorted(data, key=extract_key)
result = [
[k,[x[1] for x in g]]
for k, g in itertools.groupby(data, extract_key)
]
Run Code Online (Sandbox Code Playgroud)