Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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,我有一个.csv文件,可以从中读取输入。它包含用户名和一些其他用户信息 一个用户可能会被多次列出,因此我想在列表中列出一个用户的所有元素 因此,我的代码是: import csv with open('raw_input.csv', 'r') as f: reader = csv.reader(f) rawInput = list(reader) concat = [] for elements in rawInput[1:]: print(elements)

我有一个.csv文件,可以从中读取输入。它包含用户名和一些其他用户信息

一个用户可能会被多次列出,因此我想在列表中列出一个用户的所有元素

因此,我的代码是:

import csv

with open('raw_input.csv', 'r') as f:
    reader = csv.reader(f)
    rawInput = list(reader)

concat = []
for elements in rawInput[1:]:
    print(elements)
    concat.append([elements[0], elements[1] + "_" + elements[2] + "_" + elements[3]])
concat

 [['User 1', 'u1-c1_p1_1'],
 ['User 1', 'u1-c2_p2_2'],
 ['User 2', 'u2-c1_p1_3'],
 ['User 3', 'u3-c1_p2_4'],
 ['User 4', 'u4-c1_p3_1'],
 ['User 4', 'u4-c2_p4_6']]
应该是这样的:

[['User 1', 'u1-c1_p1_1', 'u1-c2_p2_2'],
 ['User 2', 'u2-c1_p1_3'],
 ['User 3', 'u3-c1_p2_4'],
 ['User 4', 'u4-c1_p3_1', 'u4-c2_p4_6']]

你非常接近一个解决方案。您需要的是一个
defaultdict

from collections import defaultdict
import itertools
d = defaultdict(list)
for user, date in concat:
   d[user].append(date)

final_data = [list(itertools.chain.from_iterable([[a], b])) for a, b in d.items()]
输出:

[['User 4', 'u4-c1_p3_1', 'u4-c2_p4_6'], ['User 3', 'u3-c1_p2_4'], ['User 2', 'u2-c1_p1_3'], ['User 1', 'u1-c1_p1_1', 'u1-c2_p2_2']]

你的合并尝试在哪里?提示:使用
defaultdict(list)
@Imsa很乐意帮助!