時間があり、他の投稿からの提案を受けて、私は自分の問題を解決できませんでした。 私は多くの辞書を管理しなければなりません(今まで私が働くことを知っている唯一の方法です)。複数の辞書をキーと値で組み合わせる?
私が結合したいすべての辞書について、そのうち3つは同じ鍵(d1、d2およびd3)を持っています。
d1 = {key1: [x1, x2, x3], key2: [y1, y2, y3], key3: [z1, z2, z3]}
d2 = {key1: [x4, x5, x6],key2: [y4, y5, y6], key3: [z4, z5, z6]}
d3 = {key1: [x7, x8, x9], key2: [y7, y8, y9], key3: [z7, z8, z9]}
d4 = {x2: [a, b, c], y2: [d, e, f], z2: [g, h, i]}
第四辞書には、メタデータを含む参照ファイルによって生成された辞書で、そのキーがd1
内の1つの値に等しいと私がしたいことはd1, d2
とd3
からの情報で辞書を作成することで、後には、最終的な辞書にはd4
の情報があります。
final_dict = {key1: [x1, a, b, x2, x3, x4, x5, x8, x9],
key2: [y1, d, e, y2, y3, y4, y5, y8, y9],
key3: [z1, g, h, z2, z3, z4, z5, z8, z9]}
と表形式で次のように印刷:現時点では
key1 x1 a b x2 x3 x4 x5 x8 x9
key2 y1 d e y2 y3 y4 y5 y8 y9
key3 z1 g h z2 z3 z4 z5 z8 z9
私は汚いスクリプトが、「作品」を持っています。
#!/usr/bin/env python
with open("file1.txt", "r") as file1, open("file2.txt", "r") as file2,/
open("file3.txt", "r") as file3, open("file4.txt", "r") as file4:
d1 = {}
d2 = {}
d3 = {}
d4 = {}
dicts = [d1, d2, d3, d4]
#d1 = {key1: [x1, x2, x3], key2: [y1, y2, y3], key3: [z1, z2, z3]}
#d2 = {key1: [x4, x5, x6],key2: [y4, y5, y6], key3: [z4, z5, z6]}
#d3 = {key1: [x7, x8, x9], key2: [y7, y8, y9], key3: [z7, z8, z9]}
#d4 = {x2: [a, b, c], y2: [d, e, f], z2: [g, h, i]}
for b in file1:
row = b.strip().split('\t')
if row[0] not in d1:
d1[row[0]] = row[1], row[3], row[4]
for c in file2:
row = c.strip().split('\t')
if row[0] not in d2:
d2[row[0]] = row[1:]
for f in file3:
row = f.strip().split('\t')
if row[0] not in d3:
d3[row[0]] = row[1:]
for m in file4:
row = m.strip().split('\t')
if row[0] not in d4:
d4[row[0]] = row[1], row[3], row[2]
final_dict = {}
for k in (dicts):
for key, value in k.iteritems():
final_dict[key].append(value)
print final_dic
#key1 x1 a b x2 x3 x4 x5 x8 x9
#key2 y1 d e y2 y3 y4 y5 y8 y9
#key3 z1 g h z2 z3 z4 z5 z8 z9
問題は最後の3行です。
深い知識がないため、簡単な提案(ダミーの場合)が評価されます。
だから、基本的に 'd1'、' d2'、および 'd3'をキーにマージしたいのですか? 'x6'、' x7'、 'y6'、' y7'、 'z6'、' z7'はどうなりますか?私はなぜ彼らがあなたの希望する出力に含まれていないのかの背後にある論理を取得しません。 – blacksite
ディクショナリを別の質問に分けて分けることをお勧めします。そして、これを多くの辞書から1つに移動する方法に集中させてください。 – Karnage
この場合、* d3 *からのすべての情報が必要なわけではありません。それが彼らが最終的な出力に現れない理由です。 アドバイスをいただきありがとうございます@ Karnage。 –