将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
仅包含一个键值对-对应于具有共享键的 最后一个 元组。