Python:如何合并数组中的相同元素?

0 python merge list

我有这个数组:

[['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)

可能吗?我需要首先将其制成列表或词典吗?

Der*_*rek 5

您可以使用itertools.groupbysortedgroupbyitertools基团连续匹配值。

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)