我有两个文本文件名weburl.txt和imageurl.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]
,以至于当我们向下钻取它们时,我会感到一种眩晕:
- 使用名为
dict
的变量的明显意图(这是一个坏主意,因为它会掩盖 Python 对dict
类的内置引用)。让我们称之为d
。 - 不先初始化字典实例。如果你把它叫做
d
这样,这种疏忽会为你赢得一个易于理解的NameError
。但是,由于您将其称为dict
,因此Python实际上将尝试在dict
类本身(不支持__setitem__
)中设置项目,而不是在dict
实例中设置项目,因此您将获得一个不同的,更令人困惑的错误。 - 尝试进行
dict
条目赋值,其中键是不可哈希类型(key
是list
)。您可以轻松地将list
转换为可哈希类型tuple
,但这不是您想要的,因为您仍然是......
尝试一次将 - 一堆值分配给它们各自的键。这不能用
d[key] = value
语法来完成。它可以在一个相对简单的语句中完成,即d=dict(zip(key,value))
但不幸的是,这并不能回避你...... - 不去除每个键和值末尾的换行符。
相反,这一行:
d = dict((k.strip(), v.strip()) for k, v in zip(key, value))
会做你似乎想做的事。