我试图在 python 中分割一个列表,以便我得到两个单独的列表:一个包含键,一个包含值。我的列表如下所示:
[(b'a', 2), (b'surprise,', 1), (b'but', 1), (b'welcome', 1), (b'one', 1), (b'for', 1), (b'sure.', 1)]
我在编码方面相对较新,所以我只是想知道我如何能够做这样的事情。
请您参考如下方法:
使用zip解压数据:
>>> l = [(b'a', 2), (b'surprise,', 1), (b'but', 1), (b'welcome', 1), (b'one', 1), (b'for', 1), (b'sure.', 1)]
>>> [*zip(*l)] # similar to list(zip(*l))
[(b'a', b'surprise,', b'but', b'welcome', b'one', b'for', b'sure.'), (2, 1, 1, 1, 1, 1, 1)]
如果您想要列表而不是元组,请使用推导式:
>>> [list(x) for x in zip(*l)]
[[b'a', b'surprise,', b'but', b'welcome', b'one', b'for', b'sure.'], [2, 1, 1, 1, 1, 1, 1]]
为了修复 l 是否为空列表,您可以使用 或 表达式的组合:
>>> keys, values = [*zip(*[])] or ([], [])
>>> keys
[]
>>> values
[]
