Найти - Пользователи
Полная версия: Инициация значений словаря int'овскими значениями
Начало » Python для новичков » Инициация значений словаря int'овскими значениями
1 2
Shaman
 from operator import itemgetter
a = {3:0, 2:1, 1:2}
print(sorted(a.items(), key=itemgetter(1))[:2])
[(3, 0), (2, 1)]
coffe4wolf
Снова вопрос про сортировку словаря по ключам. Сортирую его через sorted, но сортировка получается немного странная

 def posname():
    tuples = ()
    name_dict = {}
    i_file = open('baby1990.html', 'rU')
    text = i_file.read()
    tuples = re.findall(r'<td>(\d+)</td><td>(\w+)</td>\<td>(\w+)</td>',text)
    for (rank, b_name, g_name) in tuples:
        name_dict[rank] = (b_name, g_name)
    b = name_dict.keys()
    b = list(b)
    b.sort()
    for rank in b:
        print(rank + '=>' + str(name_dict[rank]))

Грабим выводим построчно столбиками - первый столбик порядковый номер от 1 до 1000, 2 и 3 столбики имена. В итоге вывод выходит такой

1=>('Michael', ‘Jessica’)
10=>('Joseph', ‘Lauren’)
100=>('Gabriel', ‘Shelby’)
1000=>('Tate', ‘Peggy’)
101=>('Miguel', ‘Kaitlin’)
102=>('Seth', ‘Margaret’)
103=>('Douglas', ‘Brandi’)
104=>('Logan', ‘Krystal’)
105=>('Spencer', ‘Natasha’)
106=>('Derrick', ‘Casey’)
107=>('Wesley', ‘Bethany’)
108=>('Johnathan', ‘Haley’)
109=>('Frank', ‘Briana’)
11=>('Ryan', ‘Megan’)
110=>('Chase', ‘Kara’)
111=>('Philip', ‘Rachael’)
112=>('Lucas', ‘Miranda’)

Что не так?

Upd: я понял что не так - он сортирует ключи как строки, а не как int.
И как по-красивее преобразовать значения ключей в int'овские?
py.user.next
coffe4wolf
я понял что не так - он сортирует ключи как строки, а не как int.
  
>>> lst = ['1', '10', '2', '20']
>>> lst.sort(key=lambda i: int(i))
>>> lst
['1', '2', '10', '20']
>>> 
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB