python - 嵌套列表到字典

标签 python list dictionary list-comprehension

我正在尝试通过嵌套 list 创建 dict:

groups = [['Group1', 'A', 'B'], ['Group2', 'C', 'D']]

L = [{y:x[0] for y in x if y != x[0]} for x in groups]
d = { k: v for d in L for k, v in d.items()}

print (d)
{'B': 'Group1', 'C': 'Group2', 'D': 'Group2', 'A': 'Group1'}

不过好像有点复杂。

有没有更好的解决方案?

最佳答案

怎么样:

d = {k:row[0] for row in groups for k in row[1:]}

这给出了:

>>> {k:row[0] for row in groups for k in row[1:]}
{'D': 'Group2', 'B': 'Group1', 'C': 'Group2', 'A': 'Group1'}

因此,您遍历 groups 中的 每个 row。该行的第一个元素被视为值(row[0]),您遍历 row[1:] 以获得所有键 k.

看起来很奇怪,当你给它一个空行时,这个表达式也有效(比如 groups = [[],['A','B']])。这是因为 row[1:] 将为空,因此 row[0] 部分从不评估:

>>> groups = [[],['A','B']]
>>> {k:row[0] for row in groups for k in row[1:]}
{'B': 'A'}

关于python - 嵌套列表到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43227103/

相关文章:

python - PyCharm 未找到 Anaconda Python,给出 "can' t 打开文件 'python' : [Errno 2] No such file or directory?“

python - 为什么这些 tkinter 样式不起作用?

python - 如何递归替换元组对列表?

list - 扫描仪如何工作? haskell

javascript - 在 Map.prototype.forEach() 中获取索引

python - 为什么 db.insert(dict) 在使用 pymongo 时将 _id 键添加到 dict 对象

python - Plivo python 消息

python - Pandas:当组中的值包含相似值时从数据中删除组

python : list index out of range error while iteratively popping elements

ios - 字典 pList 的数组仅返回数组的索引