我需要初始化一个字典以启动列表中包含的元素的聚类模型,当我进行聚类时,我将按元素的索引合并这些元素,但是随后我需要显示我所用的字符串在列表中。因此,我考虑过制作字典并在每次将它们聚类时合并这些值。
所以说我有以下列表:
fileList = ["doc1", "doc2", "doc3", "doc4", "doc5"]
我的想法是用索引作为键,将字符串作为值,用它们创建一个字典:
fileDict = {0: ["doc1"], 1: ["doc2"], 2: ["doc3"], 3: ["doc4"], 4: ["doc5"]}
然后在集群过程之后,我可以更改键的名称并打印:
clustersDict = {1: ["doc1", "doc2", "doc3"], 2: ["doc4", "doc5"]}
现在,我尝试的是这样:
clustersDict = dict.fromkeys([i for i in range(len(listFiles)), name for name in listFiles])
问题在于,它对每个键都附加了整个文件列表,而不仅仅是一个,我尝试使用索引I,但它显然表示未定义,并且我真的不知道如何继续我对Python很陌生。
谢谢!
答案 0 :(得分:3)
fileList = ["doc1", "doc2", "doc3", "doc4", "doc5"]
{v:[k] for v, k in enumerate(fileList)}
结果:
{0: ['doc1'], 1: ['doc2'], 2: ['doc3'], 3: ['doc4'], 4: ['doc5']}
答案 1 :(得分:2)
只需使用enumerate:
fileList = ["doc1", "doc2", "doc3", "doc4", "doc5"]
result = dict(enumerate([f] for f in fileList))
print(result)
输出
{0: ['doc1'], 1: ['doc2'], 2: ['doc3'], 3: ['doc4'], 4: ['doc5']}
答案 2 :(得分:2)
使用字典理解
fileList = ["doc1", "doc2", "doc3", "doc4", "doc5"]
filedict = {idx:val for idx,val in enumerate(fileList)}
答案 3 :(得分:0)
您可以将功能map
与lambda
函数一起使用:
dict(enumerate(map(lambda x: [x], fileList)))