合并Dict键值

时间:2014-09-04 14:12:26

标签: python file dictionary

我有两个带有键和值的文件。我正在尝试将它们与相应的keyvalue合并。密钥存在于value1中的file1value2中的file2中。这些文件有很多列,两个文件中的key都在col[0] col[1]

我想尝试这样的事情:

key  value1 value2

代码:

from collections import defaultdict

d2 = {}

with open('file2.txt', 'r') as file2:
    for row in file2:
        cols = row.strip().split()
        #print(cols);
        key = cols[0], cols[1]
        value1 = cols[4]
with open('file1.txt', 'r') as file1:
    for row in file1:
        cols = row.strip().split()
        #print(cols);
        key = cols[0], cols[1]
        value2 = cols[2]

        print ("%s %s %s %s\n" % (d2[cols[0]], d2[cols[1]], d2[cols[4]], d2[cols[2]]))

Error:

Traceback (most recent call last):
  File "test_two.py", line 21, in <module>
    print ("%s %s %s %s\n" % (d2[cols[0]], d2[cols[1]], d2[cols[4]], d2[cols[2]]))
KeyError: '3545' (first line)

1 个答案:

答案 0 :(得分:2)

for d in (file1,file2):

此处,f是您的某个文件。

    for key, value in d:  

如果迭代文件,则会得到(字符串)。当您遍历一行(字符串)时,您将获得字符。因此,除非文件中的所有行都是两个字符长,否则for key, value in d将失败。

您的其余代码(cols = row.strip().split())似乎是正确的,但不清楚row来自哪里。正如Ashwini Chaudhary所说,你可能想要for row in d