Обычно я Wouldnt этот пост, но это сводит меня с ума в течение последних 10 часов ...Добавление элемента в список словарей
У меня есть 2 списка словарей. Но у них нет ни одного, ни одного общего. Если при повторении элементов во втором списке я сопоставляю пару ключевых значений из первого списка, то я должен добавить эти элементы в первый список в этом конкретном месте
так что первый список выглядит так:
list1 = [{'key11':'value11', 'key12':'value12', ...}, {'key11':'value111', 'key121':'value121', ...}]
и песни2, как вышеуказанном списке:
list2 = [{'2key11':'value11', 'key12':'value12', '2key13': 'value'...}, {...}]
Обратите внимание, что key12
одно и то же в обоих списках. Таким образом, конечный продукт, который я хочу это:
>list1 = list1 (some operation) list2
>list1
>[{'key11':'value11', 'key12':'value12', '2key11':'value11', ...}, {'key11':'value111', 'key121':'value121', ...}]
Обратите внимание, что в желаемом результате, я добавил все вторые списки элементов словаря к словарю, который соответствовал key12 в list1 (первый словарь).
До сих пор я делал это вручную, и результаты не были хорошими. мой код это:
for i in range(len(list)):
# Now we need to map the panther data as well.
for pitem in plist:
# match the id's to the mapped symbols
if list[i]['key_id1'] == pitem['key_id1']:
if list[i]['key_id2'] == 'n/a':
list[i]['key_id2'] = pitem['key_id2']
list[i]['somekey1'] = panther_item['somekey1']
list[i]['somekey2'] = panther_item['somekey2']
list[i]['somekey3'] = panther_item['somekey3'] # <- WHY IS THIS GIVING ME A KEY ERROR AND NOT THE ONE ABOVE IT? Both didnt exist in the dictionary stored in list.
list[i]['somekey4'] = panther_item['somekey4']
list[i]['somekey5'] = panther_item['somekey5']
elif list[i]['key_id2'] == pitem['key_id2']:
if list[i]['key_id1'] == 'n/a':
list[i]['key_id1'] = pitem['key_id1']
list[i]['somekey1'] = panther_item['somekey1']
list[i]['somekey2'] = panther_item['somekey2']
list[i]['somekey3'] = panther_item['somekey3']
list[i]['somekey4'] = panther_item['somekey4']
list[i]['somekey5'] = panther_item['somekey5']
Но я получаю keyError
на 'somekey3'. Почему «somekey3», а не «somekey2»? Оба там не были. Я помещаю их каждый раз в эту итерацию. И когда я печатаю 2 списка перед редактированием, они верны. Что здесь может быть неправильным?
матч любой ключ/значение пары или просто ключ1? –