python - 从列表中的组合创建字典
问题描述
我正在尝试dict
从列表中所有可能的元素对创建一个。这是我尝试过的。
>>from itertools import combinations
>>l = ['a','b','c']
>>dict(combinations(l,2))
{'a': 'c', 'b': 'c'}
这是错误的,因为有 3 种可能的组合。它不见了'a': 'b'
。但是,当我这样list(combinations(l,2))
做时,它给了我所有可能的组合:
[('a', 'b'), ('a', 'c'), ('b', 'c')]
这里有什么问题?
解决方案
您可以使用defaultdict
为了创建到值列表的映射:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for k, *v in combinations(l, 2):
... d[k].extend(v)
...
>>> dict(d)
{'a': ['b', 'c'], 'b': ['c']}
推荐阅读
- haskell - 如何实现 fromJust 并遍历 Haskell 中的字符串列表
- reactjs - 元素已从文档中删除,但 jest 仍然找到它
- c - 如何将变量放入字符串 - C
- excel - 使用 VBA 隐藏列
- react-native - 如何在反应原生博览会的初始屏幕中为两个平台添加视频
- hyperledger-fabric - 在 Hyperledger Fabric 中,例如 channel1 上的 peer 如何访问 channel2 的账本?
- python - 如果前一个实例 dag 运行处于运行状态,则跳过当前 dag 运行
- networking - 有没有办法在 pktgen 的同一个端口上发送和接收数据包?
- vue.js - FilePond 使用 Validate Size 插件上传错误?
- electron - Electron:ipcMain.on 和 ipcMain.handle 可以使用相同的频道名称吗?