Python:字典列表列表[关闭]
Posted
技术标签:
【中文标题】Python:字典列表列表[关闭]【英文标题】:Python: List of lists to dictionary [closed] 【发布时间】:2016-03-15 11:51:15 【问题描述】:我有一个文件,其中包含以下格式的数据:请注意这是一个示例,实际文件包含超过 2 行
1 30 5
2 64 4
我读入文件,将文本转换为整数,并将它们存储到一个列表中。这是通过以下代码完成的:
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]]
我需要将我的列表转换成字典。怎么做呢?
字典键应该是第一个元素
【问题讨论】:
你希望字典键是什么? 在你的例子中,写下最终结果应该是什么。我唯一能想到的是1: [30, 5], 2: [64, 4]
... 但这有它的问题,例如如果有两行以数字 1 开头怎么办?顺便说一句,为什么你首先想要一本字典?将数字列表存储为数字列表有什么问题?
我感觉这会变成一个需要namedtuple 或OrderedDict 的问题
【参考方案1】:
我要玩猜你想要什么,并假设每行中的第一个数字实际上是某种顺序标识符,并且你想要
1 30 5
2 64 4
成为
1 : [30, 5]
2 : [64, 4]
所以...
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
(我已经更改了 file
的名称,因为 file()
已经是 Python 中的内置函数,并且将该名称重用于其他东西是不好的形式)。
或者您可以使用字典理解,从您的项目列表开始:
itemDict = item[0]: item[1:] for item in items
【讨论】:
【参考方案2】:假设您希望您的字典键成为列表的第一个元素,这里是一个实现:
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]
【讨论】:
如何获得类似:items = ( (1, 30, 5), (2, 64, 4) ),这还是字典吗? 不,那是一个元组。字典必须有一个键值对,就像一个哈希表。另外,你在程序中的关键是什么?第一个值? 你将如何实现一个元组?正确,我的键是对应于 ID 的第一个值 要声明元组,你只需要tuple = ( (1, 30, 5), (2, 64, 4) )
,但是如果你想改变列表->元组,那么除了调用tuple(list)
来转换二度列表之外,你还需要一个for循环元组也是如此。
目前,我可以找到一维列表到元组的实现:***.com/questions/12836128/…,但抱歉,我目前不知道如何实现二维转换:-( ...以上是关于Python:字典列表列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章