LMc*_*LMc 2 python python-3.x dictionary-comprehension
我希望可能有一些使用理解来做到这一点,但是说我的数据看起来像这样:
data = [['a', 'b', 'c'], [1, 2, 3], [4, 5, 6]]
Run Code Online (Sandbox Code Playgroud)
我的最终目标是创建一个字典,其中第一个嵌套列表包含键,其余列表包含值:
{'a': [1, 4], 'b': [2, 5], 'c': [3, 6]}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了类似这样的东西让我接近,但是你可以告诉我在字典值中附加列表时遇到问题,这段代码只是覆盖:
d = {data[0][c]: [] + [col] for r, row in enumerate(data) for c, col in enumerate(row)}
>>> d
{'c': [6], 'a': [4], 'b': [5]}
Run Code Online (Sandbox Code Playgroud)
你可以在字典理解中使用zip:
{z[0]: list(z[1:3]) for z in zip(*data)}
Out[16]: {'a': [1, 4], 'b': [2, 5], 'c': [3, 6]}
Run Code Online (Sandbox Code Playgroud)
zip将采取转置:
list(zip(['a', 'b', 'c'], [1, 2, 3], [4, 5, 6]))
Out[19]: [('a', 1, 4), ('b', 2, 5), ('c', 3, 6)]
Run Code Online (Sandbox Code Playgroud)
但是,您的数据是一个列表列表,因此为了确保Python没有看到单个列表但看到三个单独的列表,您需要zip(*data)代替zip(data).有几个关于使用的帖子*:(1),(2),(3).
list(zip(*data))
Out[13]: [('a', 1, 4), ('b', 2, 5), ('c', 3, 6)]
Run Code Online (Sandbox Code Playgroud)
在词典理解中,你将第一个元素作为键,剩下的两个作为值.
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |