2013-03-29 3 views
0

В основном я создал функцию, которая принимает список dicts: например, oldList = [{'a': 2}, {'v': 2}] и newList = [{'a': 4 }, { 'с': 4}, { 'е': 5}]. Моя цель - проверить каждый ключ словаря в oldList, и если он имеет тот же ключ словаря, что и в обновлении словаря newList, добавьте его в oldList. Итак, в этом случае ключ «a» из oldList будет обновляться со значением 4, так как ключи b и e из newList не существуют в oldList, добавьте словарь в oldList. Поэтому вы получаете [{'a': 4}, {'v': 2}, {'b': 4}, {'e': 5}]. Я просто хочу знать, есть ли лучший способ сделать это?словарь сортировка

def sortList(oldList, newList): 
    for new in newList: #{'a':4},{'c':4},{'e':5} 
     isAdd = True 
     for old in oldList:#{'a':2}, {'v':2}    
      if new.keys()[0] == old.keys()[0]: #a == a 
       isAdd = False 
       old.update(new) # update dict 
     if isAdd: 
      oldList.append(new) #if value not in oldList append to it 
    return oldList 

sortedDict = sortList([{'a':2}, {'v':2}],[{'a':4},{'b':4},{'e':5}]) 
print sortedDict 

[{'a': 4}, {'v': 2}, {'b': 4}, {'e': 5}] 
+1

Поскольку это рабочий код, он может быть лучше подходит для: Http: // Просмотр Кода .stackexchange.com/ – bernie

+1

Вы уверены, что не хотите просто использовать 'dict', а не' list' одного элемента 'dict's? – Jared

+0

структура фиксируется в этом случае как список dicts – user1741339

ответ

0

Вы можете использовать метод обновления():

oldList = dict(a=2,v=2) 
newList = dict(a=4,c=4,e=5) 
oldList.update(newList)  # Update the old list with new items in the new one 
print oldList 

Выход:

{'a': 4, 'c': 4, 'e': 5, 'v': 2} 
+0

не учитывает порядок – user1741339

+0

Это то, что вы получаете при работе с dict: оно неупорядочено. Посмотрите на коллекции.OrderedDict(), если заказ - это то, что вы хотите. –

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