我见过更简单的例子,但我试图变得更复杂一点,但无法解决。
如果我有一个 OrderedDict,其中键描述一个人,值是他们的 [年龄、性别、头发颜色] 的列表。
from collections import OrderedDict
myOD = OrderedDict(adultMale1=[50, 'male', 'grey'], babyFemale=[1, 'female', 'red'], teenMale=[13, 'male', 'blonde'], teenFemale=[13, 'female', 'red'], adultMale2=[50, 'male', 'blonde'])
print myOD.keys()
# Result: myOD: ['teenMale', 'babyFemale', 'adultMale2', 'teenFemale', 'adultMale1']
我想要的是先按年龄,然后按性别,然后按头发颜色对 OrderedDict 进行排序。这将是我正在寻找的正确结果。
# Result: ['babyFemale', 'teenFemale', 'teenMale', 'adultMale2', 'adultMale1']
我想出了一种按年龄排序的方法。
sortAgeList = []
for v in myOD.values():
sortAgeList.append(v[0])
sortAgeList.sort()
myNewOD = OrderedDict()
for age in sortAgeList:
for key, value in myOD.items():
if value[0] == age:
myNewOD[key] = myOD[key]
print 'myNewOD: ', myNewOD.keys()
# Result: myNewOD: ['babyFemale', 'teenMale', 'teenFemale', 'adultMale2', 'adultMale1']
但是,我尝试了多种方法来推断这种方法,然后重新排序任何相同年龄的决胜局,然后再重新排序任何相同性别的决胜局,但这变得非常复杂,我一直认为必须成为一种更简单的方法。
我希望有人有一个想法来帮助我。谢谢大家。