python - 将多索引转换为没有循环的字典
问题描述
我有这种多索引:
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 中转换、解压缩等),我可以通过循环来做到这一点,但由于我的多索引很大,我想避免它。
有人知道轻松做到这一点的方法吗?
解决方案
尝试使用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]}
推荐阅读
- c# - 有没有比在 C# 中使用 Nlog 在每一行之后编写 logger.info() 更好的记录方法?
- javascript - 收缩表,如果它没有完全显示
- c# - 我应该在这里进行什么单元测试
- awk - awk/sed:用索引替换一行中的特定字符(从 grep 获取值之后)
- android - 如何将 android 模拟器连接到本地托管的私有以太坊区块链?
- java - Java Rhino 允许从安全上下文访问 java
- python - Robot Framework - 根据输入更改变量
- vb6 - 如何调试 vb6 activex 组件
- selenium - Protrcator - 函数调用后返回空数组
- ognl - OGNL 类关键字处理