将字符串重新格式化为整数列表

时间:2019-03-29 23:15:21

标签: python list

我正在尝试使用set比较两个列表。问题是我的列表格式不正确。使用set比较列表时,结果将分别分解每个数字而不是每个整数。

a = "[1554901200, 1554251400, 1554253200, 1554255000]"
b = "[1554901200, 1554251400, 1554253200]"
print(set(a)& set(b))

>>> set([' ', ',', '1', '0', '3', '2', '5', '4', '9'])

我希望答案是:

>>> set([1554901200, 1554251400, 1554253200])

或者我想找到一种格式化列表的方法,以便集合可以分析每个列表而不是

a = ["1554901200", "1554251400", "1554253200", "1554255000"]

2 个答案:

答案 0 :(得分:1)

您的ab是字符串,因此当您使用它们进行设置时,它将设置其中长度为1的字符串。例如set("abc")是一个包含"a""b""c"的集合。您想要:

a = eval("[1554901200, 1554251400, 1554253200, 1554255000]")
b = eval("[1554901200, 1554251400, 1554253200]")

print(set(a)& set(b))

相反。这将创建两个整数列表,并创建包含每个列表中的int的集合,然后将它们相交。

但是请确保您相信输入等于eval。

答案 1 :(得分:0)

您需要eval()函数:

a = "[1554901200, 1554251400, 1554253200, 1554255000]"
b = "[1554901200, 1554251400, 1554253200]"
print(set(eval(a))& set(eval(b)))

产生

{1554901200, 1554251400, 1554253200}