【发布时间】:2015-11-11 22:33:46
【问题描述】:
我有一个字典,其中每个键都是值的元组,我想使用 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)将按排序顺序返回仅键,而不是整个字典,即您会丢失值! -
如果您的目标是保留整个字典结构,您将希望在
sorted函数中使用dict.items()。return sorted(master_dict.items(), key=lambda key: key[0][0])应该做你想做的。
标签: python python-2.7 sorting dictionary