我有一個字典,其中每個關鍵字都是值的元組,我想使用sorted()
方法對我元組的第一個元素上的字典進行排序。我的代碼如下所示:如何對關鍵字(元組)的第一個元素進行字典排序
def mapData(header_list, dict_obj):
master_dict = {}
client_section_list = []
for element in header_list:
for row in dict_obj:
if (row['PEOPLE_ID'], row['DON_DATE']) == element:
client_section_list.append(row)
element = list(element)
element_list = [client_section_list[0]['DEDUCT_AMT'],
client_section_list[0]['ND_AMT'],
client_section_list[0]['DEDUCT_YTD'],
client_section_list[0]['NONDEDUCT_YTD']
]
try:
element_list.append((float(client_section_list[0]['DEDUCT_YTD']) +
float(client_section_list[0]['NONDEDUCT_YTD'])
))
except ValueError:
pass
element.extend(element_list)
element = tuple(element)
master_dict[element] = client_section_list
client_section_list = []
return sorted(master_dict, key=lambda key: key[master_dict[(1)]]
最後一行是我試圖找到排序它的方法。我的元組看起來是這樣的:
(312178078,6/22/15,25,0,25,0,25.0)
你的代碼有什麼問題? –
如果鍵是元組,則默認情況下該字典將按這些元組的第一個元素進行排序。但是如果你需要提供一個關鍵函數,試試'lambda key:key [0]'。最後,請注意'sorted(some_dict)'將按照排序順序返回keys_,而不是整個字典,即您將丟失值! –
如果您的目標是保留整個字典結構,您將希望在'sorted'函數中使用'dict.items()'。 'return sorted(master_dict.items(),key = lambda key:key [0] [0])'應該做你想做的事。 – cziemba