Вы можете использовать collections.defaultdict
здесь:
In [15]: from collections import defaultdict
In [16]: dic=defaultdict(list)
In [17]: for _ in xrange(4):
....: h,j=map(int,raw_input().split())
....: dic[h].append(j)
....:
1 10
1 20
2 30
3 5
In [18]: dic
Out[18]: defaultdict(<type 'list'>, {1: [10, 20], 2: [30], 3: [5]})
или использовать простой Dict и использовать dict.setdefault
:
In [19]: dic={} #use {} for declaring a new dict
In [20]: for _ in xrange(4):
....: h,j=map(int,raw_input().split())
....: dic.setdefault(h,[]).append(j)
....:
1 10
1 20
2 30
3 5
In [21]: dic
Out[21]: {1: [10, 20], 2: [30], 3: [5]}
Сортировка словаря:
Словари не может быть отсортирован, но мы можем получить список отсортированных key,value
пар или просто keys
или просто values
с использованием sorted
:
In [25]: dic={1: [10, 30], 2: [30], 3: [5,50]}
In [26]: sorted(dic.items(),key=lambda x:sum(x[1])) #sort based on sum of lists
Out[26]: [(2, [30]), (1, [10, 30]), (3, [5, 50])]
Теперь вы можете создать orderedDict
из этого предыдущего списка с помощью collections.OrderedDict
, так как он сохраняет порядок, в котором были вставлены ключи:
In [27]: from collections import OrderedDict
In [30]: od=OrderedDict(sorted(dic.items(),key=lambda x:sum(x[1])))
In [31]: od
Out[31]: OrderedDict([(2, [30]), (1, [10, 30]), (3, [5, 50])])
'a' является пустым списком, любой индекс будет вне допустимого диапазона – askewchan
где диктофон? –