将列表列表转换为2个独立列表

时间:2017-08-22 17:42:44

标签: python list

我有一个列表如下:

lol=[['"buy":17'], ['"hold":18'], ['"sell":3']]

有没有简单的方法将列表列表转换为2个独立列表?:

list1=["buy","hold","sell"]
list2=[17,18,3]

首先,我尝试了替换列表:

lol.replace('[','').replace(']','')

但是输出了'list' object has no attribute 'replace'

然后我想我可以在lol上使用正则表达式来至少使用以下代码获取独立列表中的数字:

re.findall('\d{1,2}',lol.string)

但返回的是expected string or bytes-like object

2 个答案:

答案 0 :(得分:3)

您可以在':'上拆分字符串,然后使用ast.literal_eval生成最终输出:

import ast

l1, l2 = zip(*[map(ast.literal_eval, lst[0].split(':')) for lst in lol])
print(l1, l2)
# ('buy', 'hold', 'sell'), (17, 18, 3)

答案 1 :(得分:0)

我会这样做的。不确定它是不是最好的方式。

lol=[['"buy":17'], ['"hold":18'], ['"sell":3']]
list1 = list()
list2 = list()
for list_ in lol:
    list1.append(list_[0].split(':')[0])
    list2.append(list_[0].split(':')[1])

输出:

list1
Out[59]: ['"buy"', '"hold"', '"sell"']

list2
Out[60]: ['17', '18', '3']