如何逐行读取 2 个不同的文本文件并使用 python 制作另一个包含字典的文件?



我有两个文本文件名weburl.txtimageurl.txt,weburl.txt包含网站和imageurl的URL.txt包含所有图像URL 我想创建一个字典来读取一行weburl.txt并将字典和imageurl.txt行的键作为值。网址.txt

url1
url2
url3
url4
url5......

图片网址.txt

imgurl1
imgurl2
imgurl3
imgurl4
imgurl5

所需输出为

{'url1': imgurl1, 'url2': imgurl2, 'url3': imgurl3......}

我正在使用此代码

with open('weburl.txt') as f :
key = f.readlines()
with open('imageurl.txt') as g:  
value = g.readlines()
dict[key] = [value]
print dict

我没有得到所需的结果

你可以写类似的东西

with open('weburl.txt') as f, 
open('imageurl.txt') as g:
# we use `str.strip` method
# to remove newline characters
keys = (line.strip() for line in f)
values = (line.strip() for line in g)
result = dict(zip(keys, values))
print(result)

有关zip的更多信息,请访问文档

该语句在很多层面上都存在问题dict[key] = [value],以至于当我们向下钻取它们时,我会感到一种眩晕:

  1. 使用名为dict的变量的明显意图(这是一个坏主意,因为它会掩盖 Python 对dict类的内置引用)。让我们称之为d
  2. 不先初始化字典实例。如果你把它叫做d这样,这种疏忽会为你赢得一个易于理解的NameError。但是,由于您将其称为dict,因此Python实际上将尝试在dict类本身(不支持__setitem__)中设置项目,而不是在dict实例中设置项目,因此您将获得一个不同的,更令人困惑的错误。
  3. 尝试进行dict条目赋值,其中键是不可哈希类型(keylist)。您可以轻松地list转换为可哈希类型tuple,但这不是您想要的,因为您仍然是......
  4. 尝试一次将
  5. 一堆值分配给它们各自的键。这不能用d[key] = value语法来完成。它可以在一个相对简单的语句中完成,即d=dict(zip(key,value))但不幸的是,这并不能回避你......
  6. 不去除每个键和值末尾的换行符。

相反,这一行:

d = dict((k.strip(), v.strip()) for k, v in zip(key, value))

会做你似乎想做的事。

最新更新