感谢您的帮助。对python来说还是一个新手。我相信我不会在这些问题上滥用SO的善意。我正在尝试从SQL数据库心态演变为python列表/字典方法。
这是一个带有嵌套元组的列表片段(总是包含三个元素):
List = [(u'32021', u'161', 1696.2), (u'32021', u'162', 452.2), (u'32044', u'148', 599.2), (u'32044', u'149', 212.2)]
可以将它转换为带有嵌套字典的字典,如下所示:
{'32021': ('161': 1696.2, '162': 452.2), '32044': ('148': 599.2, '149': 212.2)}
我解决了类似的问题,每个元组中只有两个项目使用:
d = defaultdict(list)
for k, v in values:
d[k].append(v)
对于三个项目,是一个使用索引和for循环的解决方案吗?
谢谢。
答案 0 :(得分:0)
你可能想要这个:
d = {}
for k1,k2,v in List:
d[(k1,k2)] = v
甚至是这样:
d = {(k1,k2):v for k1,k2,v in List}
答案 1 :(得分:0)
您可以使用嵌套的defaultdict来执行此操作:
d = defaultdict(lambda:defaultdict(list))
for k1, k2, v in values:
d[k1][k2].append(v)
print d['32044']['148']
[599.2]
等
另外,请参阅bunch
模式,这是一个易于使用的类似想法,即使您可以直接指定属性而无需先声明它们:
https://pypi.python.org/pypi/bunch/1.0.1