【发布时间】:2017-11-01 18:06:29
【问题描述】:
我有两个文本文件,我想将它们合并到一个字典中,这样它就包含第一个文本文件的所有行,其中包含来自第一个文本文件和第二个文本文件(如果可用)的值。有人可以帮忙吗?
例如,
a.txt 看起来像这样:
apple 5 7e-6 na 2.2
banana 9 3e-2 2 2.1
orange na 9.2 2.1 na
b.txt 看起来像这样:
orange 5 6.2 na 6e-3 nd
mango 4 7.3 na 7 3
apple 4 4.4 4.3 na 2
我想在 python 上合并这两个文本文件,以便得到如下输出:
apple 5 7e-6 na 2.2 4 4.4 4.3 na 2
banana 9 3e-2 2 2.1 na na na na na
orange na 9.2 2.1 na 5 6.2 na 6e-3 nd
我尝试为这两个文本文件制作两个字典并将它们添加在一起,使用以下代码:
with open('a.txt', 'r') as document:
a = {}
for line in document:
if line.strip(): # non-empty line?
key, value = line.split(None, 1)
a[key] = value.split()
with open('b.txt', 'r') as document:
b = {}
for line in document:
if line.strip(): # non-empty line?
key, value = line.split(None, 1)
b[key] = value.split()
def combineDict(*args):
result = {}
for dic in args:
for key in (result.viewkeys() | dic.keys()):
if key in dic:
if type(dic[key]) is list:
result.setdefault(key, []).extend(dic[key])
return result
final = combineDict(a,b)
但这也保留了第二个文本文件中的所有值(如“芒果”)
【问题讨论】:
-
键是拆分的第一个值,列表追加其余部分。这就是提示,否则,你做了什么?你查过如何处理文本文件,列表和字符串操作,有代码吗?
-
请向我们展示您的尝试
-
您是否尝试过任何事情,或者您只是要求我们为您做这件事?
-
香蕉的所有“na na na na ne”值是从哪里来的?为什么输出中没有芒果?
-
抱歉之前没有分享代码。您现在可以在编辑后的输出中找到它。另外,我不希望芒果出现在最终列表中,因为这不是第一个文本文件中的关键。
标签: python dictionary text merge