2013-04-04 1 views
1

У меня есть список словарей с различными ключами, все из которых являются целыми числами, и мне нужно написать функцию, которая использует сортировку вставки для сортировки по определенному ключу.Как сделать вставку сортировки по списку словарей в python?

def insertionsort(alldata, key): 
    for i in alldata : 
    temp = alldata[i] 
    j = i 
    while j > 0 and alldata[i['key']] < alldata[j - 1['key']]: # no idea how to put this 
     alldata[j] = alldata[j-1] 
    alldata[j] = temp 
+0

Вы делаете это для образовательных целей? Если вы не просто используете 'sort' с параметром' key'. – Igonato

+0

@Igonato Да для образовательных целей! – Nelly

+0

Вам нужно отступать все после цикла 'for'. Кроме того, вы можете получить ключи, используя 'for (key_a, key_b) в (dict_a, dict_b):', а затем выполните сравнение во втором цикле. – fgb

ответ

1

i['key'] выглядит как ошибка. Здесь вы не используете переменную key.

Попробуйте alldata[i][key] < alldata[j - 1][key] как условие

Также необходимо изменить j в вашем время цикла или он может побежал навсегда

def insertionsort(alldata, key): 
    for i in alldata : 
     temp = alldata[i] 
     j = i 
     while j > 0 and alldata[i][key] < alldata[j - 1][key]: 
      alldata[j] = alldata[j - 1] 
      j -= 1 
     alldata[j] = temp 
0

Каждая вещь после того, как цикл shuld отступом больше 1 раз (независимо от числа пробелов, которые вы используете для отступов) Что касается других вопросов, я не знаю.

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