2015-04-23 2 views
2

Я пытаюсь сортировать словарь по значениям, но мой код был ошибочным. У меня есть три файла, состоящий из десятков (в формате «Боб: 4», с разрывами строк между каждым счетомСортировка списка по значениям

for k in d.keys(): 
    nlist = d[k][-3:] 
    for v in nlist: 
     nlist2 = max(nlist) 
    sortd = sorted(nlist2.items(), key=lambda x: x[1]) 
    print('{}: {} '.format(k, sortd)) 

Это привело к ошибке «AttributeError:„список“объект не имеет атрибута„элементов“»..

Что вызывает эту ошибку?

+0

Вы сортировки 'nlist'? это список? – itzMEonTV

+0

как @itzmeontv подразумевает, поставьте '' print (d) '' перед вашим циклом k, чтобы убедиться, что у вас есть то, что, по вашему мнению, у вас есть – paddyg

+0

Извините, я допустил ошибку. Я пытаюсь сортировать значения nlist2 (максимум для каждого пользователя), а затем распечатывать их в списке, с именами рядом с ними (в порядке наивысших до наименьших) # – DasKapital

ответ

0

для пересмотренного вопроса вы можете:

nlist2 = {k:max(d[k][-3:]) for k in d} 
sortd = sorted(nlist2.items(), key=lambda x: x[1]) 
for a in sortd: 
    print('{}: {} '.format(a[0], a[1])) 

или использовать -x [1], если вы хотите высокий первый

0

sortd = sorted(nlist.items(), key=lambda x: x[1])

этот код здесь использовать nlist но список согласно nlist = d[k][-3:]

+0

'nlist.items()' здесь не работает – Morb

+0

@Morb У исходного кода есть сообщение об ошибке здесь, и я просто отвечаю на эту причину. – amow

+0

Извините, я смешиваю 'nlist' и' nlist2' здесь, он пытался сортировать 'nlist2.items()', который является int – Morb

2

Попробуйте с sortd = sorted(nlist, key=lambda x: x[1]) и посмотрите, получилось ли то, что вы хотели.