Python检查两个JSON列表是否相等
我有两个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
[{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