Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何在数组中合并相同的元素?_Python_List_Merge - Fatal编程技术网

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

Python:如何在数组中合并相同的元素?,python,list,merge,Python,List,Merge,我有这个阵列: [['Amy', '2'], ['Amy', '2'], ['Amy', '1'], ['Yoyo', '1'], ['Yoyo', '2'], ['Yoyo', '2']] 我想这样做: [['Amy', ['2','2','1'], ['Yoyo',['1','2','2']] 可能吗?我是否需要先将其列为列表或词典?使用: 使用: 如果你能用字典 如果您可以使用字典。您可以使用itertools.groupby和排序分组依据itertools中的grou

我有这个阵列:

[['Amy', '2'],
 ['Amy', '2'],
 ['Amy', '1'], 
 ['Yoyo', '1'],
 ['Yoyo', '2'],
 ['Yoyo', '2']]
我想这样做:

[['Amy', ['2','2','1'], 
 ['Yoyo',['1','2','2']]
可能吗?我是否需要先将其列为列表或词典?

使用:

使用:

如果你能用字典


如果您可以使用字典。

您可以使用
itertools.groupby
排序
<代码>分组依据
itertools
中的
groupby
对连续的匹配值进行分组

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)
]

您可以使用
itertools.groupby
sorted
<代码>分组依据
itertools
中的
groupby
对连续的匹配值进行分组

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)
]

看起来您有一个列表列表,而不是numpy数组。或者你有数组吗?这个问题和另一个问题的唯一区别是你的键只是每个列表的第一个元素。Thanks,它最初是一个数组,转换为列表是可以的。看起来你有一个列表列表,而不是numpy数组。或者你有数组吗?这个问题和另一个问题的唯一区别是你的键只是每个列表的第一个元素。Thanks,它最初是一个数组,转换为列表是可以的。太棒了,非常有用!棒极了,非常有用!
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)
]