Python使用嵌套元组

时间:2015-10-15 18:24:41

标签: python dictionary

感谢您的帮助。对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循环的解决方案吗?

谢谢。

2 个答案:

答案 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