Сопоставьте два списка словарей в зависимости от заданного условия - PullRequest
1 голос
/ 14 апреля 2020

У меня есть два списка словарей, я хочу сравнить их по условию и распечатать значения списка.

dest = [{'pin': 0,
 'cpin': 0,
 'lst': ['id1_1',
        'id1_2',
        'id1_3']},

    {'pin': 0,
     'cpin': 1,
     'lst': ['id2_1',
        'id2_2',
        'id2_3',
        'id2_4']}
]

    src = [
 {'data': ['1001'],
    'pin':0
    'cpin': 0,
  'name':'single_data_a'},

 {'data': ['1002',
           '1003'],
   'pin':0
   'cpin': 0,
   'name': 'Large_data_1'},

 {'data': ['2001',
           '2002',
           '2003'],
   'pin':0
   'cpin': 1,
   'name': 'Large_data_2'}
  }]

Вывод: Распечатать данные: Сравнение списка словарей и печать значения, если условие выполняется из обоих словарей.

Например: pin и cpin из dest и sr c совпадают, затем выведите значения в соответствии с lst из dest и данные в sr c

single_data_a
        1001
        id1_1

        large_data_1
        1002
        id1_2

        large_data_1
        1003
        id1_3

        Large_data_2
        2002
        id2_1

        Large_data_2
        2003
        id2_2

Код, который я пробовал: для второго списка он не начинается с id2_1

for b, i in enumerate(src):
        for c, j in enumerate(dest, b):

            get_pin = i.get('pin')
            get_cpin= i.get('cpin')
            for l in i.get('lst'):
                if int(get_pin) == int(j.get('get_pin')) and int(get_cpin) == int(j.get('get_cpin')):
                    print(l)
                    print(j.get('lst')[c])
                    print(i.get('name')
                    c = c + 1

1 Ответ

1 голос
/ 14 апреля 2020

Вы можете попробовать что-то вроде этого.

>>> for d in dest:
...   for s in src:
...     if d['cpin'] == s['pin'] and d['pin'] == s['pin']:
...       for data, l in zip(s['data'], d['lst']):
...         print(s['name'])
...         print(data)
...         print(l)


single_data_a
1001
id1_1
Large_data_1
1002
id1_1
Large_data_1
1003
id1_2
Large_data_2
2001
id1_1
Large_data_2
2002
id1_2
Large_data_2
2003
id1_3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...