我正在尝试使用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"]
答案 0 :(得分:1)
您的a
和b
是字符串,因此当您使用它们进行设置时,它将设置其中长度为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}