fly*_*zai 5 python sorting dictionary python-2.7
我有一个字典,其中每个键都是值的元组,我想使用该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)]]
Run Code Online (Sandbox Code Playgroud)
最后一行是我试图找到一种对其进行排序的方法。我的元组看起来像这样:
(312178078,6/22/15,25,0,25,0,25.0)
Run Code Online (Sandbox Code Playgroud)
不能完全确定您要执行的操作,特别是该函数应该返回的内容。我假设您想返回按键元组中第一个元素排序的字典。
为此,有两件事要注意:
OrderedDict替代项一些最小的例子:
>>> d = {(2,4): 1, (1,3): 2, (1,2): 3, (3,1): 4}
>>> sorted(d)
[(1, 2), (1, 3), (2, 4), (3, 1)]
>>> sorted(d.items())
[((1, 2), 3), ((1, 3), 2), ((2, 4), 1), ((3, 1), 4)]
>>> collections.OrderedDict(sorted(d.items()))
OrderedDict([((1, 2), 3), ((1, 3), 2), ((2, 4), 1), ((3, 1), 4)])
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可能希望这样做:
return collections.OrderedDict(sorted(master_dict.items()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5782 次 |
| 最近记录: |