Python 2.7 - 两个列表作为字典

时间:2014-02-03 11:48:15

标签: python list python-2.7 dictionary

dict1 = open('dict1.txt','r')
dict2 = open('dict2.txt','r')

keys = []
values = []

for w in dict1:
   keys.append(w.strip())
   for key in keys:
       key


for x in dict2:
    values.append(x.strip())
    for val in values:
       val

dictionary = {key: val}

文本文件包含140行单个单词。 'keys'是第一个文件中的单词列表,'values'是第二个文件中的单词列表。

每当我打印字典时,我只会得到第一对字典。如何在字典中循环它以便我得到所有140对?

我试过这样做:

dictionary = {}
val = dictionary[key]

但是我在控制台上得到'KeyError'。我知道这是基本的东西,但我一直在努力。

2 个答案:

答案 0 :(得分:1)

您可以使用zip轻松构建字典:

for w in dict1:
   keys.append(w.strip())

for x in dict2:
    values.append(x.strip())

dictionary = dict(zip(keys, values))

您的KeyError是由于分配错误导致的:

val = dictionary[key]

尝试将dictionary中当前key的内容(什么都不是)分配给val。相反,它应该是:

dictionary[key] = val 

您的循环代码也不正确:

for w in dict1:
   keys.append(w.strip())
   for key in keys: # looping over all keys so far each time
       key # doesn't do anything

你的第一次尝试:

dictionary = {key: val}

每次都会创建一个新的dictionary

答案 1 :(得分:0)

使用zip()组合两个文件中的键和值。您可以使用两行代码一次性生成整个字典:

with open('dict1.txt','r') as keys, open('dict2.txt','r') as values:
    dictionary = {key.strip(): value.strip() for key, value in zip(keys, values)}

您的代码循环遍历这两个文件,并且在每个循环之后,keyvalue仍然绑定到每次迭代的最后一个值。