gpt4 book ai didi

python - 如何根据键的第一个元素(元组)对字典进行排序

转载 作者:太空狗 更新时间:2023-10-30 00:55:02 26 4
gpt4 key购买 nike

我有一个字典,其中每个键都是值的元组,我想使用 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)

最佳答案

不完全确定您要做什么,尤其是该函数应该返回什么。我假设您想返回按键元组中的第一个元素排序的字典。

为此,有两点需要注意:

  1. 元组默认按第一个元素排序(如果它们相同,则按第二个元素排序,依此类推),因此不需要特殊的键函数
  2. 常规字典是无序的,即它们不能以任何顺序永久排序;您只能将他们的项目排序为列表,或使用该列表创建 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)])

在你的情况下,你可能想要这个:

return collections.OrderedDict(sorted(master_dict.items()))

关于python - 如何根据键的第一个元素(元组)对字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32081729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com