首页 > 解决方案 > 将多索引转换为没有循环的字典

问题描述

我有这种多索引:

multiindex = 
[(10, 24016),
 (10, 24042),
 (10, 24130),
 (20, 33457),
 (20, 34339),
 (20, 34598),
 (20, 34754)]

我想从第一个索引的每个值中获取第二个索引中链接的其他值的列表。在我的例子中,我想要这样的东西(不是特别是字典)

{10: [24016, 24042, 24130], 20: [33457, 34339, 34598, 34754]}

我已经尝试了很多东西(比如在 dict 中转换、解压缩等),我可以通过循环来做到这一点,但由于我的多索引很大,我想避免它。

有人知道轻松做到这一点的方法吗?

标签: pythonmulti-index

解决方案


尝试使用itertools.groupby

groups = {k: [i[1] for i in list(g)] for k,g in groupby(multiindex, lambda x: x[0])}
print(groups)

输出:

{10: [24016, 24042, 24130], 20: [33457, 34339, 34598, 34754]}

推荐阅读