Сортировка работает по-разному с '&' в одном из элементов списка - PullRequest
0 голосов
/ 01 декабря 2018

если у нас есть dict и преобразовать его

a={'pop': 1, 'Christmas': 1, 'R&B': 2}

, а затем мы используем отсортированный

sorted(list(a))

почему он возвращает это?:

['Christmas', 'R&B', 'pop']

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

list(a) дает список ключей словаря и sorted сортирует его.Поскольку ваши ключи представляют собой сочетание прописных и строчных букв, вы не ожидаете, что они будут возвращаться требуемым образом, поскольку заглавные буквы сортируются перед строчными.

Один из способов справиться с этим - определить пользовательскую функцию, например:

a = {'pop': 1, 'Christmas': 1, 'R&B': 2}

def lower(x):
    return x.lower()

print(sorted(list(a), key=lower))
# ['Christmas', 'pop', 'R&B']

Если вы пытаетесь отсортировать по длине слова, это будет выглядеть так:

a = {'pop': 1, 'Christmas': 1, 'R&B': 2}

print(sorted(list(a), key=len))
# ['pop', 'R&B', 'Christmas']
0 голосов
/ 01 декабря 2018
>>> a={'pop': 1, 'Christmas': 1, 'R&B': 2}
>>> list(a)
['pop', 'Christmas', 'R&B']

list(a) - ключи в словаре, а sorted() сортирует ключи.

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