这里简单的问题,我有
我现在已经尝试了半个小时了,发布它似乎有点基础,但也许将来会帮助其他人。
twodee = dict(zip(waternumber, residencetime))
with open(fileName2, "r") as otherinput:
try:
for line in otherinput:
for waternumber, residencetime in twodee.iteritems():
line.split()[1] == waternumber
line.split()[9] = residencetime
except:
pass
非常感谢!
答案 0 :(得分:2)
您没有将.split()
的结果分配给任何内容,也没有正确测试。此外,您根本不需要遍历您的twodese dict,只需使用waternumber
运算符测试dict中是否存在in
值:
for line in otherinput:
line = line.split()
waternumber = int(line[1])
if waternumber in twodee:
line[9] = twodee[waternumber]
print line
最后但并非最不重要的一点是,您希望实际使用更改的行执行某些操作,此处我将其打印出来。
详细说明一下,你的两行.split()
是最终无所作为的行动:
line.split()[1] == waternumber
line.split()[9] = residencetime
第一个操作将行拆分为列表,选择第一个元素并测试它是否等于waternumber
值。这可能是True
或False
,但您不会做任何事情而不是布尔值。它只是被删除,python没有对它采取行动,并且无论如何都会执行下一行。
第二个操作再次将该行拆分为一个列表,选择第9个元素,并将其替换为residencetime
的值。但是,line.split()
的结果并没有神奇地改变list
的值,它返回一个列表,在这种情况下,它不会被分配给任何内容,因此又掉了。
答案 1 :(得分:2)
您的一些建议代码:
line.split()[1] == waternumber
不是作业,而是比较,此行被评估为表达式,结果会进一步丢失。