有 list A 与 list B,list 中的每一个元素是一个 JSON 对象,请问有什么好的方式来比较两个 list 中存在差异的部分呢?
例如:
list A:[json1, json2, josn3]
list B:[json1, json2, josn3]
我想要比较这两个 list 是否完全一样或者存在着怎样的差异,请问最好的解决方式是什么?
有 list A 与 list B,list 中的每一个元素是一个 JSON 对象,请问有什么好的方式来比较两个 list 中存在差异的部分呢?
例如:
list A:[json1, json2, josn3]
list B:[json1, json2, josn3]
我想要比较这两个 list 是否完全一样或者存在着怎样的差异,请问最好的解决方式是什么?
|
noliJul 9, 2017 via iPhone
1
把 list 变成 set,再用交集并集运算
|
|
2
@noli list 中可能存在重复元素,这些元素个数也需要一致。。
|
|
bazingaterryJul 9, 2017 via iPhone
3
先转成字符串再对比?
|
|
JhZ7z587cYROBgVQJul 9, 2017
4
用 collections.Counter([iterable-or-mapping]) 做做看呢?
|
|
noliJul 9, 2017
5
@misaka19000 那你可以包一个 python 对象再放进 set 里面,这个 python 对象指出 json 在原 list 里面的 index,这样他们的 __hash__ 不一样,甚至你还可以自己再重载一下 __hash__
|
|
6
这个 https://bitbucket.org/vadim_semenov/json_tools/wiki/Home 或者其他 json 比较的包
|
|
carlonelongJul 10, 2017
7
把 json load 出来 sort 比较?
我记得有专门比较 json 的库的,GitHub 上面应该能找到。 |
|
noobsheldonJul 10, 2017
8
dictdiffer 可以试试
|
|
sunwei0325Jul 10, 2017
9
@noobsheldon 这个库好👍
|
|
ToBeHackerJul 10, 2017
10
感觉就是遍历啊,你用啥都绕不开这个的,只是用起来简便一点而已。
|
|
liveppsJul 10, 2017 via Android
11
排序一下,格式化成字符串,然后用自带的 diff 库比较,这个库比对差异效率非常高。
|
|
12
@livepps 谢谢,我待会儿试一下
|
|
ikeeperJul 12, 2017
13
for x,y in zip(list1,list2):
if x == y: print(1) else: print(0) #小白表示这样不行吗 |
|
15
@ikeeper 两个 list 顺序可能不一样
|