我有两个从两个不同的数据库表生成的python列表
list1= ["'HZ1398043','HZ1395693','HZ1395532','HZ1395240','HZ1395194','HZ1395113','HZ1395036','HZ1395236','HZ1396139','HZ1398028','HZ1395098','HZ1395998','HZ1395018','HZ1395829','HZ1398031','HZ1395708','HZ1398029','HZ1398030','HZ1398054''"]
list2= ['', '', '', '', '', 'HZ1395018', 'HZ1395036', 'HZ1395098', 'HZ1395113', 'HZ1395194', 'HZ1395236', 'HZ1395240', 'HZ1395532', 'HZ1395693', 'HZ1395708', 'HZ1395829', 'HZ1395998', 'HZ1396139', 'HZ1398028', 'HZ1398029', 'HZ1398031', 'HZ1398043', 'HZ1397932', 'HZ1397949', 'HZ1398004', 'HZ1398021', 'HZ1398030', 'HZ1397940', 'HZ1397941', 'HZ1398010',', '', '']
Run Code Online (Sandbox Code Playgroud)
我需要找到两者之间的共同元素
set(list1) & set(list2)
Run Code Online (Sandbox Code Playgroud)
不显示任何内容
甚至[i for i in list1 if i in list2]不显示任何东西.我可以清楚地看到HZ1398043很常见.
仔细观察,您的第一个列表实际上是一个包含一个项目的列表,一个大字符串.
>>> list1= ["'HZ1398043','HZ1395693','HZ1395532','HZ1395240','HZ1395194','HZ1395113','HZ1395036','HZ1395236','HZ1396139','HZ1398028','HZ1395098','HZ1395998','HZ1395018','HZ1395829','HZ1398031','HZ1395708','HZ1398029','HZ1398030','HZ1398054''"]
>>> len(list1)
1
Run Code Online (Sandbox Code Playgroud)
理想情况下,修复获取数据的任何地方,如果不可能,那么您将需要解析数据.
你会想要做一些事情list1 = [item.strip("'") for item in list1[0].split(",")]来获得实际的列表(一个简单的列表理解),然后使用你的一个方法(set方法是最有效的,但如果你希望保持重复和顺序,你将需要做第二种方法,虽然您可以通过list2预先设置一组来检查其成员身份来改进它.