시간이 지나고 다른 게시물에서 제안을 받으면 문제를 해결할 수 없었습니다. 많은 사전을 관리해야합니다 (지금까지 내가 일하는 유일한 방법).키와 값으로 여러 사전을 결합 하시겠습니까?
내가 결합하고자하는 4 개의 사전 모두에 대해 세 개의 동일한 키 (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
한 값과 동일하며, 내가 원하는 것은 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
사전을 다른 질문으로 나누는 것이 좋습니다. 그리고이 중 하나를 많은 사전에서 하나로 전환하는 방법에 초점을 맞추십시오. – Karnage
이 경우에는 * d3 *의 모든 정보를 원하지 않습니다. 그것이 최종 산출물에 나타나지 않는 이유입니다. @Karnage에게 조언 해 주셔서 감사합니다. –