2017-09-05 10 views
0

私は入力を読み取った.csvファイルを持っています。ユーザー名とその他のユーザー情報が含まれています。リストの共通要素を含むPythonマージリスト

1人のユーザーが複数回リストされている可能性があるので、リスト内の1人のユーザーからすべての要素をリストしたいと考えています。

だから、私が持っているコードは、このです:

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']] 
+0

?ヒント: 'defaultdict(list)'を使用してください – Julien

答えて

1

あなたが解決策に非常に近いです。 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']] 
+0

ありがとうございます。正確に私が探していたもの。 :) – Imsa

+0

@Imsa助けてうれしい! – Ajax1234

関連する問題