【发布时间】:2016-06-29 15:08:14
【问题描述】:
我有一个来自 csv 文件的代码列表:
file_path = 'c:\\temp\\list.csv'
csvfile = open(file_path, 'rb')
reader = csv.reader(csvfile, delimiter=';')
rr = []
for sor in reader:
if sor[1][0] == '1':
rr.append(sor)
print type(rr)
<type 'list'>
set (rr)
Traceback (most recent call last):
File "<pyshell#85>", line 1, in <module>
set (rr)
TypeError: unhashable type: 'list'
如果我对来自数据库的其他列表执行相同操作,则效果很好:
cur.execute('select code from mytable')
res = cur.fetchall()
res1 = []
res1.append(x[0] for x in res)
print type(res1)
<type 'list'>
set(res1)
set(['13561255', '11120088'])
rr 和 res1 都是列表类型,有什么区别?
实际上我正在寻找数据库中不存在于 csv 文件中的记录
result = list(set(res1) - set(rr))
我怎样才能实现这一点(也许以更优化/更快的方式)?
【问题讨论】:
标签: python list python-2.7 set