【发布时间】:2021-07-24 03:21:19
【问题描述】:
我在这里有两个类,我在类 Store 的字典中添加类 Info 类型的对象。
from collections import defaultdict
from random import randint
import numpy as np
class Info:
def __init__(self, grade, age):
self.grade = grade
self.age = age
class Store:
def __init__(self):
self.d = defaultdict(dict)
def add_obj(self, name, obj):
self.d[name] = obj
def return_val(self):
"return by sorted age desc"
return self.d
obj = Store()
for _ in range(3):
name = chr(np.random.randint(ord('a'), ord('z')))
info = Info(grade = randint(1, 5), age = randint(7, 12))
obj.add_obj(name, info)
print(obj.return_val())
我要做的是在 return_val 方法中按年龄的降序返回创建的字典。有什么办法吗?
【问题讨论】:
-
字典按插入顺序排序。如果您想要真正可排序的东西,请使用列表。你期待什么输出,究竟是什么?你实际尝试过什么?它是如何失败的?
-
没有。字典按字母顺序存储。 “collections.OrderedDict”按它们创建的顺序存储。如果您需要自定义顺序,请将键拉入列表,对列表进行排序,然后返回列表和字典。
-
@TimRoberts 自 Python 3.7+(以及 3.6 作为实现细节)以来,dict 对象保持插入顺序。他们从来没有保持字母顺序..
标签: python dictionary oop