我想要一个包含多个元素的元组列表,并将其转换为一个多维字典,而不需要重复键。如果下面是我的原始清单:

myList = [('jeep', 'red', 2002, 4), ('jeep', 'red', 2003, 6), ('jeep', 'blue', 2003, 4), ('bmw', 'black', 2015, 8)]

我想把上面的内容变成这样的字典:
{'jeep':
    {'red': [
        [2002, 4],
        [2003, 6]]
    'blue': [
        [2003, 4]]
    },
'bmw':
    {'black': [
        [2015, 8]]
    }
}

我使用Python的defaultdict似乎走上了正确的道路,但我似乎无法完全解决这个问题。谢谢!

最佳答案

使用大量的dict.setdefault。。。

myList = [('jeep', 'red', 2002, 4), ('jeep', 'red', 2003, 6), ('jeep', 'blue', 2003, 4), ('bmw', 'black', 2015, 8)]

d = {}
for model, colour, year, month in myList:
    d.setdefault(model, {}).setdefault(colour, []).append([year, month])

对于myList中的每个项,要么获取模型的当前字典,要么使用新的空dict创建键,然后使用该dict检索该颜色的列表,要么使用新的空列表设置键,然后将年份和月份作为2元素列表附加到该列表。。。
给你d
{'bmw': {'black': [[2015, 8]]},
 'jeep': {'blue': [[2003, 4]], 'red': [[2002, 4], [2003, 6]]}}

关于python - 从多维列表创建字典,而无需重复键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39312794/

10-09 16:38
查看更多