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:字典列表列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

python如何创建字典? [关闭]

将列表的javascript列表减少为列表字典[关闭]

映射多个列表以在python中创建(键,值)对[关闭]

字典、列表还是数组? [关闭]

如何从字典列表中创建数据框 [关闭]

如何将列表转换为字典? [关闭]