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