如何将由元组和整数组成的列表转换为嵌套字典?

12 浏览
0 Comments

如何将由元组和整数组成的列表转换为嵌套字典?

我有一个包含元组和整数的列表,

例如:

mylist = [ (('ART', 'bar'), 2), (('ART', 'get'), 1), (('b', 'bet'), 1), (('b', 'chest'), 1), (('b', 'kart'), 2), (('b', 'zee'), 1)]

我想将其转换为嵌套字典,

my_dict = {
    "ART": {"bar": 2, "get": 1},
    "b": {"bet": 1, "chest": 1, "kart": 2,"zee": 1}
}

我尝试使用for循环来实现这个目标,但我是一个初学者,对嵌套字典没有任何经验,所以不知道从哪里开始。

我查看了其他与字典嵌套字典有关的问题,例如这个这个,但是提出的方法对我不起作用(我猜测是因为我处理的是元组而不仅仅是列表)。

0
0 Comments

问题的出现原因是需要将一个包含元组和整数的列表转换成一个嵌套字典。解决方法是使用循环遍历列表中的元素,并根据元素的值构建嵌套字典。

代码中的解决方法如下:

mylist = [ (('ART', 'bar'), 2), (('ART', 'get'), 1), (('b', 'bet'), 1), 
(('b', 'chest'), 1), (('b', 'kart'), 2), (('b', 'zee'), 1)]
mydict = dict()
for i in mylist:
    if i[0][0] not in mydict.keys():
        mydict[i[0][0]] = {i[0][1]: i[1]}
    else:
        mydict[i[0][0]][i[0][1]] = i[1]
print(mydict)

这段代码首先创建了一个空字典`mydict`,然后通过循环遍历`mylist`中的元素。对于每个元素,代码首先检查元素的第一个元组值`i[0][0]`是否已经是`mydict`的键。如果不是,则将该键和对应的值`{i[0][1]: i[1]}`添加到`mydict`中。如果是,则将该值添加到已有键的字典中的对应位置。

最后,代码打印输出了转换后的嵌套字典`mydict`。

通过上述方法,可以将包含元组和整数的列表转换成嵌套字典。

0
0 Comments

问题的出现原因:用户想要将一个包含元组和整数的列表转换为一个嵌套的字典。

解决方法:可以通过循环遍历输入列表,并使用setdefault方法来填充字典。具体的代码如下:

my_dict = {}
for (key, prop), value in mylist:
    my_dict.setdefault(key, {})[prop] = value

上述代码会创建一个空字典my_dict。然后,通过循环遍历mylist中的每个元组和整数。在每次循环中,将元组中的第一个元素作为键key,将元组中的第二个元素作为键prop,将整数作为值value

在每次循环中,使用setdefault方法来检查是否已存在键key。如果键key不存在,则会创建一个新的嵌套字典,并将其赋值给键key。然后,将键prop和值value添加到嵌套字典中。

通过循环遍历所有的元组和整数后,my_dict将包含完整的嵌套字典结构。

通过上述方法,用户可以将一个包含元组和整数的列表转换为一个嵌套的字典。

0