给定列表:
a = [
[2, 10 ],
[3, 120],
[4, 30 ]
]
b = [
[1, 10 ],
[2, 40]
]
我如何使用列表推导、压缩、最小/最大、连接、枚举、izip_longest、map 和/或 lambda 来返回按左变量排序的第三个列表,并将左变量的副本连接到一个单行,保持原始列表在中间和最后位置的位置。假设 a
永远在中间位置,b
永远在最后一个位置,如 a
和 b
可能有不同的长度。
c = [
[1, None, 10 ],
[2, 10 , 40 ],
[3, 120 , None ],
[4, 30 , None ]
]
对于一行复制/粘贴
a = [[2, 0],[3, 120],[4, 30]]
b = [[1, 0],[2, 40]]
c = [[1, None, 0],[2, 0, 40],[3, 120 , None],[4, 30, None]]
感谢您的帮助。我迷路了,试图用令人垂涎的单行代码来帮助我理解 Python 大师的思维方式!
最佳答案
使用链图+列表理解:
>>> from collections import ChainMap
>>> c = ChainMap(dict(a), dict(b))
>>> [[k] + [d.get(k) for d in c.maps] for k in c]
[[1, None, 0], [2, 0, 40], [3, 120, None], [4, 30, None]]
这样可以很容易地推广到使用 2 个以上的输入列表。
关于python - 从两个不同长度的列表( [2 * n] 和 [2 * m] )到 [ 3 * len(unique(n[0],m[0])) ] 的单个列表的列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54542620/