将3元素元组的列表转换为字典


问题内容

如果我有两个元组列表

tuple2list=[(4, 21), (5, 10), (3, 8), (6, 7)]

tuple3list=[(4, 180, 21), (5, 90, 10), (3, 270, 8), (6, 0, 7)]

如何将其转换为以下字典,

tuple2list2dict={4:21, 5:10, 3:8, 6:7}

tuple3list2dict={4: {180:21}, 5:{90:10}, 3:{270:8}, 6:{0:7}}

我知道如何在元组中使用2个元素,

tuple2list2dict=dict((x[0], index) for index,x in enumerate(tuple2list))

但是对于3个元素,我有问题,请尝试以下操作,

tuple3list2dict=dict((x[0], dict(x[1], index)) for index,x in enumerate(tuple3list))

如何将以上代码用于3个元素元组来创建字典?

任何指针都赞赏或指出我可以在此获得更多信息的地方。在互联网上找不到它。


问题答案:

在Python2.7或更高版本中,您可以使用dict理解:

In [100]: tuplelist = [(4, 180, 21), (5, 90, 10), (3, 270, 8), (4, 0, 7)]

In [101]: tuplelist2dict = {a:{b:c} for a,b,c in tuplelist}

In [102]: tuplelist2dict
Out[102]: {3: {270: 8}, 4: {0: 7}, 5: {90: 10}}

在Python2.6或更旧的版本中,等效项为

In [26]: tuplelist2dict = dict((a,{b:c}) for a,b,c in tuplelist)

请注意,如果元组中的第一个值出现多次(如上例所示),则结果tuplelist2dict仅包含一个键值对-对应于具有共享键的 最后一个 元组。