嗨,我正试图比较两个csv文件,并得到差异。但是我得到了上面提到的错误。有人能帮忙吗。谢谢
import csv
f = open('ted.csv','r')
psv_f = csv.reader(f)
attendees1 = []
for row in psv_f:
attendees1.append(row)
f.close
f = open('ted2.csv','r')
psv_f = csv.reader(f)
attendees2 = []
for row in psv_f:
attendees2.append(row)
f.close
attendees11 = set(attendees1)
attendees12 = set(attendees2)
print (attendees12.difference(attendees11))
导致您创建了列表列表:
像wise一样:
^{pr2}$那么当你这样做的时候:
错误将被抛出
你应该做的是:
发生在线路上
不是吗?您试图从列表列表中生成一个集合,但这是不可能的,因为集合可能只包含散列类型,而列表不是。可以将列表转换为元组。在
^{pr2}$当你迭代csv阅读器时,你会得到列表,所以当你这样做的时候
行实际上是一个列表实例。因此attendees1/attendees2是一个列表。
当您将其转换为set()时,需要确保没有项目出现超过一次,并且set()中继列表中项目的哈希函数。所以你得到了一个错误,因为当你转换为set()时,它试图散列一个列表,但是列表是不可散列的。在
如果执行以下操作,则会出现相同的异常:
^{pr2}$更多集合:https://docs.python.org/2/library/sets.html
相关问题 更多 >
编程相关推荐