Как показать разницу между двумя списками словарейPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как показать разницу между двумя списками словарей

Сообщение Anonymous »

У меня есть два списка:

Код: Выделить всё

list1 = [
{'name': 'one', 'email': '[email protected]', 'phone': '111'},
{'name': 'two', 'email': '[email protected]', 'phone': '111'},
{'name': 'three', 'email': '[email protected]', 'phone': '333'},
{'name': 'four', 'email': '[email protected]', 'phone': '444'},
]
list2 = [
{'first_name': 'three', 'email': '[email protected]', 'phone_number': '333'},
{'first_name': 'four', 'email': '[email protected]', 'phone_number': '444'},
{'first_name': 'five', 'email': '[email protected]', 'phone_number': '555'},
]
Я знаю, как найти разницу между двумя списками по ключу:

Код: Выделить всё

list1_only = list(set([x['phone'] for x in list1]) - set([x['phone_number'] for x in list2]))
Но текущий вывод:

Код: Выделить всё

['111']
Но в конце концов я получу вот такой результат:

Код: Выделить всё

[
{'name': 'one', 'email': '[email protected]', 'phone': '111'},
{'name': 'two', 'email': '[email protected]', 'phone': '111'}
]
Я знаю этот способ, но думаю (и уверен), что есть способ получше:

Код: Выделить всё

for l in list1:
for d in diff:
if d == l['phone']:
print(l)

Я читал другие подобные вопросы, но он печатает весь список (а не значения разницы):

Код: Выделить всё

[x for x in list2 if x['phone_number'] not in list1]
Не могли бы вы помочь мне с этим?
Есть ли однострочные способы замены на list1_only = list(set([x[' телефон'] для x в списке1]) - set([x['phone_number'] для x в списке2]))?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ctionaries
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»