为什么添加我的元组列表改变它们的内容?



我正在尝试制作包含字符串和字典的元组列表。字符串是文件名,字典是n-gram的频率列表。

('story.txt',
{'back': 12,
'been': 13,
'bees': 58,
'buzz': 13,
'cant': 30,
'come': 12,
'dont': 64,
'down': 16,
'from': 22,
...})

对于我正在做的事情,我想要创建一个这些元组的列表,看起来像

[('story.txt',
{'back': 12,
'been': 13,
'bees': 58,
'buzz': 13,
'cant': 30,
'come': 12,
'dont': 64,
'down': 16,
'from': 22,
...}),
('great_expectations.txt',
{'_he_': 12,
'able': 32,
'aged': 54,
'aint': 56,
'also': 34,
'arms': 44,
'away': 158,
'baby': 23,
...})
]

我正试图用下面的代码做到这一点:

documents = ['story.txt', 'great_expectations.txt']
outputs = []
for document in documents:
doc_map = map_maker.make_map(document, 4, 10)
list_tuple = (document, doc_map)
# pprint.pprint(list_tuple)
outputs.append(list_tuple) 
# pprint.pprint(outputs)

由于某种原因,上面的代码在附加字典之前组合了来自字典的数据,这样'story.txt'字典将具有最初与'great_expectations.txt'相关联的条目,反之亦然,如:

[('story.txt',
{'_he_': 12,
'able': 32,
'aged': 54,
'aint': 56,
'also': 34,
'arms': 44,
'away': 158,
'baby': 23,
'back': 238,
...}),
('great_expectations.txt',
{'_he_': 12,
'able': 32,
'aged': 54,
'aint': 56,
'also': 34,
'arms': 44,
'away': 158,
'baby': 23,
'back': 238,
...})
]

它为什么这样做?我认为元组应该是不可变的。

您提供的代码没有问题,我推测您在map_maker.make_map的某个地方留下了硬编码文件名,或者您在make_map中重用结果变量doc_map(它是静态的或map_maker的成员,注意python中可变类型的默认参数)

相关内容

  • 没有找到相关文章

最新更新