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)
我需要将列表列表转换为字典.怎么会这样做呢?
字典键应该是第一个元素
我将要进行猜测,然后假设每行的第一个数字实际上是某种顺序标识符,而您想要
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)
假设您希望您的字典键是列表的第一个元素,这里是一个实现:
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]}