我有一个列表如下:
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
答案 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']