Tôi có một thiết lập từ điển python như vậySorting phím từ điển dựa trên giá trị của họ
mydict = { 'a1': ['g',6],
'a2': ['e',2],
'a3': ['h',3],
'a4': ['s',2],
'a5': ['j',9],
'a6': ['y',7] }
tôi cần phải viết một hàm trả về các phím lệnh trong một danh sách, tùy thuộc vào cột của bạn sắp xếp trên ví dụ như vậy nếu chúng ta đang sắp xếp trên mydict [key] [1] (tăng dần)
tôi sẽ nhận được một danh sách lại như vậy
['a2', 'a4', 'a3', 'a1', 'a6', 'a5']
Nó chủ yếu hoạt động, ngoài việc khi bạn có các cột của va cùng lue cho nhiều phím, ví dụ như. 'a2': ['e', 2] và 'a4': ['s', 2]. Trong trường hợp này nó sẽ trả về danh sách như vậy
['a4', 'a4', 'a3', 'a1', 'a6', 'a5']
Dưới đây là các chức năng tôi đã xác định
def itlist(table_dict,column_nb,order="A"):
try:
keys = table_dict.keys()
values = [i[column_nb-1] for i in table_dict.values()]
combo = zip(values,keys)
valkeys = dict(combo)
sortedCols = sorted(values) if order=="A" else sorted(values,reverse=True)
sortedKeys = [valkeys[i] for i in sortedCols]
except (KeyError, IndexError), e:
pass
return sortedKeys
Và nếu tôi muốn sắp xếp trên cột số ví dụ nó được gọi như vậy
sortedkeysasc = itmethods.itlist(table,2)
Vì vậy, có đề xuất nào không?
Paul
bạn chỉ cần sử dụng 'khóa' kwarg của hàm sắp xếp – ulidtko