如何从列表中创建字典,其中键是索引,值是列表的实际元素?

时间:2019-11-28 11:24:12

标签: python list dictionary

我需要初始化一个字典以启动列表中包含的元素的聚类模型,当我进行聚类时,我将按元素的索引合并这些元素,但是随后我需要显示我所用的字符串在列表中。因此,我考虑过制作字典并在每次将它们聚类时合并这些值。

所以说我有以下列表:

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很陌生。

谢谢!

4 个答案:

答案 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)

您可以将功能maplambda函数一起使用:

dict(enumerate(map(lambda x: [x], fileList)))