我有以下字典:
my_dict = {"user": [1, 2, 3, 4], "sex": ['M', 'F', 'O', 'F'],"timeOfArrival": [4, 1, 3, 8]}
我想找到一种基于timeOfArrival
键对其进行排序的方法,如以下示例所示:
my_dict = {"user": [2,3,1,4 ], "sex": ['F', 'O', 'M', 'F' ],"timeOfArrival": [4, 1, 3, 8]}
现在我很难想出一个直截了当的解决办法
我尝试的是对timeOfArrival
进行排序,然后我尝试在my_dict
内部循环,这样我可以将值重新排列到它们的“正确”位置,这很有效,但是如果我有重复的值(即"timeOfArrival": [4, 4, 3, 1]}
),我会得到一个比我在开始时给出的字典更大的字典
有没有更好的方法来整理我的字典
def sortDict(dictionary={},name="test"):
sortedList=sorted(my_dict[name])
dictKeys=list(dictionary.keys())
testDict={}
for i in dictKeys:
testDict[i]=[]
for key in dictKeys:
for item in sortedList:
for pos in range(0,len(dictionary[name])):
if(item==dictionary[name][pos]):
testDict[key].append(dictionary[key][pos])
return testDict
数据可以与^{} 合并
这会给你
这是可以分类的
结果:
解压缩已排序的数据:
现在
data
看起来是这样的:最后,排序后的数据必须放回匹配的字典条目
现在
my_dict
包含{'user': [2, 3, 1, 4], 'sex': ['F', 'O', 'M', 'F'], 'timeOfArrival': [4, 1, 3, 8]}
压缩版本
我建议您使用“Insertion Sort”算法
我修改了它以适合您的示例,它似乎可以按照您的意愿执行:
问候
我想这就是你要找的。它通过获取排序的到达时间的索引来确定排序顺序。然后,我使用索引顺序对dict中的所有列表进行排序
相关问题 更多 >
编程相关推荐