Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:字典列表_Python_List_Dictionary - Fatal编程技术网

Python:字典列表

Python:字典列表,python,list,dictionary,Python,List,Dictionary,我有一个文件,其中包含以下格式的数据:请注意,这是一个示例,它看起来像什么,实际的文件包含超过2行 我读入文件,将文本转换为整数,并将它们存储到列表中。这是通过以下代码完成的: 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

我有一个文件,其中包含以下格式的数据:请注意,这是一个示例,它看起来像什么,实际的文件包含超过2行

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

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, 30, 5], [2, 64, 4]]
我需要把我的清单变成一本字典。一个人怎么做呢


Dictionary键应该是第一个元素

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

1    30    5
2    64    4
成为

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

(我更改了
file
的名称,因为
file()
在Python中已经是一个内置函数,将该名称重新用于其他内容是不好的)


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

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

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

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

for l2 in list:
    dict[l2[0]] = l2[1:]
它通过迭代
list
和子列表
l2
工作。然后,我取
l2
的第一个元素并将其指定为
dict
的键,然后取
l2
的其余元素并将其作为值


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

您希望字典键是什么?在您的示例中,写出最终结果应该是什么。我唯一能想到的是
{1:[30,5],2:[64,4]}
。。。但这也有它的问题,例如,如果有两行以数字1开头怎么办?顺便说一句,你为什么一开始就想要一本字典?将数字列表存储为数字列表有什么问题?我有一种感觉,这将成为一个需要解决的问题,或者您将如何获得以下内容:items=((1,30,5),(2,64,4)),这仍然是一个字典吗?不,这是一个元组。字典必须有一个键值对,就像哈希表一样。另外,你在课程中的关键是什么?第一个值?如何实现元组?正确,我的键是对应于ID的第一个值,要声明元组,只需执行
tuple=((1,30,5),(2,64,4))
,但如果要更改list->tuple,除了调用
tuple(list)
将二级列表转换为元组之外,还需要一个for循环,我可以找到1D列表到元组的实现,但是很抱歉,我目前不知道如何实现2D转换:-(。。。
itemDict = {item[0]: item[1:] for item in items}
list = [[1, 30, 5], [2, 64, 4]]
dict = {}

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