我有两个文本文件名称 weburl.txt 和 imageurl.txt , weburl.txt 包含网站的网址和 imageurl .txt 包含我想创建一个字典的所有图片网址,该字典读取一行 weburl.txt 并生成字典的键, imageurl.txt 行为一个值。 的 weburl.txt
url1
url2
url3
url4
url5......
imageurl.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
我没有得到所需的结果
答案 0 :(得分:3)
你可以写一些像
这样的东西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)
有关docs
的zip
的更多信息
答案 1 :(得分:1)
语句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))
会做你想要的。