Python:列表的列表转字典

Python: List of lists to dictionary

我有一个文件,其中包含以下格式的数据:请注意,这是一个示例,实际文件包含2行以上

1
2
1    30    5
2    64    4

我读取文件,将文本转换为整数,并将它们存储到一个列表中。这是通过以下代码完成的:

1
2
3
4
5
file = open("dataFile.txt","r")
items = []
for line in file:
    line = map(int,line.split()) #convert the text data to integers
    items.append(line) #add text data to list

列表的当前格式如下:

1
[[1, 30, 5], [2, 64, 4]]

我需要把我的列表变成一本字典。你会怎么做?

字典键应该是第一个元素


我想猜猜你想要什么,假设每行的第一个数字实际上是某种顺序标识符,你想要

1
2
1    30    5
2    64    4

成为

1
2
1  : [30, 5]
2  : [64, 4]

所以…

1
2
3
4
5
6
with open("dataFile.txt") as dataFile:
    items = {}
    for line in dataFile:
        line = map(int, line.split())  #convert the text data to integers
        key, value = line[0], line[1:]
        items[key] = value

(我更改了EDOCX1的名称(0),因为file()已经是python中的内置函数,将该名称用于其他方面是不好的形式)。

或者,您可以使用字典理解,从项目列表开始:

1
itemDict = {item[0]: item[1:] for item in items}

假设您希望字典键是列表的第一个元素,下面是一个实现:

1
2
3
4
5
list = [[1, 30, 5], [2, 64, 4]]
dict = {}

for l2 in list:
    dict[l2[0]] = l2[1:]

它通过迭代list和子列表l2工作。然后,取EDOCX1的第一个元素(3),作为EDOCX1的键(5),然后取EDOCX1的其余元素(3)作为值。

结果是完成的词典{1: [30, 5], 2: [64, 4]}