我正在尝试通过嵌套 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/