我已经搜索了解决我的问题的方法,但没有成功。我的问题的一部分解决方案在这里,但这并不能完全解决问题。
我有两个字典列表,每个字典都写入了一个csv文件,但我将内容读取到以下变量中:
使用上面链接中提供的解决方案,即:
我没有任何匹配结果,因为字典的顺序不同。但实际上,两个列表是相同的。我该如何检查这一点?我需要在写入csv文件之前对字典进行排序吗?这可能是一个解决方法吗?
这是我目前的主要问题,但我还有另一个问题。如果能够忽略我定义的一个或多个键进行匹配检查将会很好。这也可能吗?
编辑:我有一个csv文件中的字典,并使用以下代码读取它们:
这非常重要,因为我认为问题在于从csv读取值后它们不再是字典,所以顺序必须保持一致。
编辑2:csv文件示例(3行,它创建了一个空行,但这不是问题...)
我有两个字典列表,每个字典都写入了一个csv文件,但我将内容读取到以下变量中:
list1 = [{a:1, b:2, c:3}, {a:4, b:5, c:6}, {a:7, b:8, c:9}]
list2 = [{b:2, a:1, c:3}, {c:6, b:5, a:4}, {b:8, a:7, c:9}]
使用上面链接中提供的解决方案,即:
>>> import itertools
>>> a = [{'a': '1'}, {'c': '2'}]
>>> b = [{'a': '1'}, {'b': '2'}]
>>> intersec = [item for item in a if item in b]
>>> sym_diff = [item for item in itertools.chain(a,b) if item not in intersec]
我没有任何匹配结果,因为字典的顺序不同。但实际上,两个列表是相同的。我该如何检查这一点?我需要在写入csv文件之前对字典进行排序吗?这可能是一个解决方法吗?
这是我目前的主要问题,但我还有另一个问题。如果能够忽略我定义的一个或多个键进行匹配检查将会很好。这也可能吗?
编辑:我有一个csv文件中的字典,并使用以下代码读取它们:
def read_csv_file(self, filename):
'''Read CSV file and return its content as a Python list.'''
f = open(filename, 'r')
csvfile = csv.reader(f)
f.close
return [row for row in csvfile]
这非常重要,因为我认为问题在于从csv读取值后它们不再是字典,所以顺序必须保持一致。
编辑2:csv文件示例(3行,它创建了一个空行,但这不是问题...)
"{u'Deletion': '0', u'Source': 'Not Applicable', u'Status': ''}"
"{u'Deletion': '0', u'Source': 'Not Applicable', u'Status': ''}"
list2
是用于什么的? - Iron Fist