2015-04-02 4 views
0

У меня есть два списка объектов JSON:Python Проверьте два списка jsons равны

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

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

Они могут прийти в различных порядках, или один может быть подмножеством других или просто разные адреса, мне нужно функцию, чтобы просто сказать «Истина», если оба включают одинаковые адреса /суммы или False, если они разные.

Я думаю, проблема в том, что у одного есть ключи/значения unicode, а другие - строки.

Я потратил слишком много времени на эту простую проблему, которая не имеет понятия, что еще нужно делать.

+1

Это недопустимо JSON, это похоже на синтаксис буквального диктатора Python. –

+0

Я распечатал их для регистрации («% s -% s»% (выходы, new_outputs)) – Shayan

+0

Значения «суммы» имеют значение? –

ответ

0

так в конце концов, это то, что я написал, не может быть наиболее эффективным способом, но это работает!

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 
2

Хитрость здесь заключается в использовании структуры данных, которая игнорирует порядок появления элементов при выполнении сравнения равенства - скажем, set. Попробуйте это, который использует набор постижений для извлечения адресов и сумм из каждого списка:

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

Значение ключа должно быть таким же, чтобы быть истинным, как адресом, так и суммой. – Shayan

+0

в любом случае я бы попробовал вставить, если – Shayan

+0

@Shayanbahal Вы можете просто конкатенации адреса и количества и сравнения. –

Смежные вопросы