2017-02-20 17 views
-1

я пытаюсь удалить лишние элементы из списка, используя collections.Counter но вернуть Dict, когда я пытаюсь получить ключи они сортируются, например,Python 2,7 мкм Удалите излишние элементы в списке, но сохранить Заказать

import collections 
aa=[55,0,1,55,4,7,8] 
s=collections.Counter(aa) 
print s 
print s.keys() 

Выход:

Counter({55: 2, 0: 1, 1: 1, 4: 1, 7: 1, 8: 1}) 

[0, 1, 4, 7, 8, 55] 

Хотя я имею проверку collections.counter является подклассом словаря (Dict)

https://docs.python.org/2/library/collections.html , который утверждает

прилавке является ДИКТ подкласс для подсчета hashable объектов

Я не могу понять, когда его ключи в порядке, которые я хочу, но делать

s.keys() дает отсортированные ключи

+1

не может понять, в чем проблема? –

+0

@amitKarnik Я запутался, если счетчик возвращает мне подкласс dict с сохранением порядка .. когда я получаю ключи от s.keys(), он сортирует их, почему это так? –

ответ

1

Вы можете отсортировать ключи по их расположению с в первоначальном списке:

sorted(s.keys(), key=lambda v:aa.index(v)) 
+0

спасибо, что это работает, можете ли вы также объяснить мне, если collection.counter возвращает dict с ключами с сохранением порядка, но когда я получаю s.keys(), он возвращает отсортированный массив ключей –

+0

Они не всегда возвращаются отсортированы; ваш был довольно маленьким примером. –

+0

Вот что я хочу знать, в чем причина и случай, когда они приходят отсортированы, а когда нет @Scott Hunter –

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