我正在尝试匹配两个列表中的数据结果。
第一个数据源来自MySQL。
第二个数据源来自csv。
第一个输出(MySQL)或b的代码如下:
conn = MySQLdb.connect("localhost", "username", "pwd", "databasename")
cursor = conn.cursor()
query = "select ID from Table1"
cursor.execute(query)
a = [item[0] for item in cursor.fetchall()]
b = ('[{}]'.format(', '.join(a)))
第二个输出(csv)或c的代码如下:
db = pd.read_csv(File, usercols=['ID'], skiprows=skip)
c = dg['ID'].values.tolist()
第二个数据源是csv文件。 我正在尝试使用底码来获得比赛。
set(b).intersection(c)
set(b) & set(c)
但是,我没有像我预期的那样看到比赛。
例如,第一个List包含如下数据:
[111111, 2222, 3333333, 4444444]
Second List的数据如下:
[8888888, 2222, 6748987, 3688777, 55555]
我期待得到结果:
set([2222])
但我只有
set([])
两个列表中是否存在数据类型(可能导致不匹配)等原因?
答案 0 :(得分:0)
是的,交叉路口应该有效。我测试了你的代码并得到了:
ls1 = [111111, 2222, 3333333, 4444444]
ls2 = [8888888, 2222, 6748987, 3688777, 55555]
set(ls1).intersection(ls2)
输出:
{2222}
另一种方法是:
ls1 = [111111, 2222, 3333333, 4444444]
ls2 = [8888888, 2222, 6748987, 3688777, 55555]
[x for x in ls1 if x in ls2]
输出:
[2222]