我正在尝试制作包含字符串和字典的元组列表。字符串是文件名,字典是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中可变类型的默认参数)