переменная ошибка в функции при назначении - PullRequest
0 голосов
/ 12 января 2020

Написать Python скрипт для сортировки (возрастания и убывания) словаря по значению

def sort_dictionary_ascending(dict):
    flag = True
    list = []
    while(len(dict)!=1):
        flag = True
        for x,y in dict.items():
            if flag:
                min = x
                flag = False
            elif min>x:
                min =x;
        list.append(min)
        dict.pop(min)
    min,value= dict.popitem()
    list.append(min)
    print(list)
def sort_dictionary_descending(dict):
    flag = True
    list = []
    while(len(dict)!=1):
        flag = True
        for x,y in dict.items():
            if flag:
                max = x
                flag = False
            elif max < x:
                max = x
        list.append(max)
        dict.pop(max)
    max,value= dict.popitem()
    list.append(max)
    print(list)
d = {1: 1, 3: 3, 4: 4, 2: 2, 5: 5}
sort_dictionary_descending(d)
sort_dictionary_ascending(d)

Ошибка:

/home/admin2/Desktop/two/venv/bin/python /home/admin2/Desktop/two/sort_dictionary.py
Traceback (most recent call last):
  File "/home/admin2/Desktop/two/sort_dictionary.py", line 45, in <module>
    sort_dictionary_ascending(d)
  File "/home/admin2/Desktop/two/sort_dictionary.py", line 17, in sort_dictionary_ascending
    list.append(min)
UnboundLocalError: local variable 'min' referenced before assignment
[5, 4, 3, 2, 1]

1 Ответ

0 голосов
/ 12 января 2020

Сначала в ваших циклах for используйте for x in dict.keys() вместо for x, y in dict.items(), поскольку переменная y не используется в целом l oop. Во-вторых, я не понимаю, почему вы используете dict, ключ которого равен значению, список больше подходит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...