Python:字典列表列表

Jus*_*ngs 7 python dictionary list

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

1    30    5
2    64    4
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

列表的当前格式如下:

[[1, 30, 5], [2, 64, 4]]
Run Code Online (Sandbox Code Playgroud)

我需要将列表列表转换为字典.怎么会这样做呢?

字典键应该是第一个元素

Tes*_*ler 8

我将要进行猜测,然后假设每行的第一个数字实际上是某种顺序标识符,而您想要

1    30    5
2    64    4
Run Code Online (Sandbox Code Playgroud)

成为

1  : [30, 5]
2  : [64, 4]
Run Code Online (Sandbox Code Playgroud)

所以...

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
Run Code Online (Sandbox Code Playgroud)

(并且我已经更改了名称,file因为file()它已经是Python中的内置函数,并且将其重用于其他名称是不好的形式)。


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

itemDict = {item[0]: item[1:] for item in items}
Run Code Online (Sandbox Code Playgroud)


Pat*_* Yu 5

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

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

for l2 in list:
    dict[l2[0]] = l2[1:]
Run Code Online (Sandbox Code Playgroud)

它通过迭代list和子列表来工作l2。然后,我取 的第一个元素l2并将其分配为 的键dict,然后取其余的元素l2并将其作为值。

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