Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python检查两个JSON列表是否相等_Python_Json - Fatal编程技术网

Python检查两个JSON列表是否相等

Python检查两个JSON列表是否相等,python,json,Python,Json,我有两个JSON对象列表: [{u'amount': 12000, u'address': u'mqdofsXHpePPGBFXuwwypAqCcXi48Xhb2f'}, {u'amount': 1000, u'address': u'mkVuZV2kVtMzddQabFDanFi6DTwWYtgiCn'}] [{"amount": 12000, "address": "mqdofsXHpePPGBFXuwwypAqCcXi48Xhb2f"}, {"amount": 1000, "addr

我有两个JSON对象列表:

[{u'amount': 12000, u'address': u'mqdofsXHpePPGBFXuwwypAqCcXi48Xhb2f'},
 {u'amount': 1000, u'address': u'mkVuZV2kVtMzddQabFDanFi6DTwWYtgiCn'}]

[{"amount": 12000, "address": "mqdofsXHpePPGBFXuwwypAqCcXi48Xhb2f"},
 {"amount": 1000, "address": "mkVuZV2kVtMzddQabFDanFi6DTwWYtgiCn"}]
它们可能有不同的顺序,或者一个可能是另一个的子集,或者只是不同的地址,如果两者都包含相同的地址/数量,我需要一个函数来表示True,如果它们不同,则表示False

我想问题是一个有unicode键/值,而另一个是字符串


我在这个简单的问题上花了太多时间,不知道还能做什么。

这里的技巧是使用一个数据结构,在执行相等比较时忽略元素的显示顺序,例如,
集。试试这个,它使用集合理解从每个列表中提取地址和金额:

{(d['address'], d['amount']) for d in lst1} == {(d['address'], d['amount']) for d in lst2}

所以最后这就是我写的,可能不是最有效的方法,但它是有效的

def json_equal(json1,json2):

   number_of_items = len(json1)
   for item in json1:
       for item2 in json2:
           if item["address"] == item2["address"]:
               if item["amount"] == item2["amount"]:
                   number_of_items -= 1
                   break
           else:
               continue
   if number_of_items == 0:
       return True
   else:
       return False

这不是有效的JSON,它看起来像Python dict文本语法。我将它们打印出来,以便使用(“%s-%s”%(输出,新输出))记录“数量”条目是否重要?@Asad是的,这对条目很重要。即使交换每个地址的金额,它也应该返回False,键值应该相同,地址和金额都是Trueif@Shayanbahal您可以将地址和金额串联起来,然后比较。@Shayanbahal{(json['address'],json['amount'])对于lst1中的json}={(json['address'],json['amount']))对于lst2}中的json