a_set = set(a_file)TypeError:不可用类型:'list'

时间:2015-02-16 11:50:24

标签: python python-2.7

with open('a_file.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile)
    a_file = [row for row in reader]
csvfile.close()
with open('b_file.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile)
    b_file = [row for row in reader]
csvfile.close()
# create sets
a_set = set(a_file)
b_set = set(b_file)
# find common elements
common = a_set & b_set
# find elements only in a
a_only = a_set.difference(b_set)
# find elements only in b
b_only = b_set.difference(b_set)

我的代码用于从两个csv文件中提取不同的文本并将它们放在两个不同的变量中。

1 个答案:

答案 0 :(得分:3)

a_file是列表列表,因此无法转换为setset的元素必须是不可变的(因此可以为它们分配稳定的哈希值),并且list是可变的。

如果你做了

a_file = [tuple(row) for row in reader]

(并对b_file执行相同的操作),然后它应该可以正常工作。

此外,无需关闭csvfilewith区块正在处理此问题。