我在一个名为cars.txt的单独文件中创建了一个字典。我的代码的目的是返回字典中的什么并对它们进行排序。我的问题是,现在我的代码只返回make / model,而不是年份,更不用说分类的年份了。谢谢你的帮助。
class Car:
def __init__(make,model,year):
self.make=make
self.year=year
def set_year(year):
self.year=year
def get_year(self):
return self.year
def display(self):
return (self.make, ":" , self.year)
def __str__(self):
return self.make + " : " + str(self.model)
def __lt__(self,other):
return self.year<other.title
def __repr__(self):
return str(self)
def constructDictionary():
dict = {}
file = open("cars.txt","r");
for line in file:
data = line.split(" ")
dict[data[0].strip()]=data[1].strip()
file.close()
return dict;
def main():
dict=constructDictionary()
[value for (key, value) in sorted(dict.items())]
aList=dict
print(aList)
main()
答案 0 :(得分:1)
以下行没有在您的代码中执行任何操作:
[value for (key, value) in sorted(dict.items())]
这是一个列表解析,用于构建列表,并返回一个列表。如果您将main
更改为
def main():
dict=constructDictionary()
alist = [value for (key, value) in sorted(dict.items())]
print(aList)
然后您的代码将打印一个包含字典值的列表,按键排序。它将按字典键排序,因为您使用了dict.items()
,在排序元组时,sorted
将首先比较元组的第一个元素,然后是第二个元素等。
如果要按字典中的值排序,只需将列表推导更改为
即可alist = list(sorted(dict.values()))
一个提示:Python不是Java。不建议使用getter和setter。如果您对控制不变量或类似的东西不感兴趣,请查看property
或仅直接访问变量。
此外,您可以使用context manager
。
答案 1 :(得分:0)
首先,您需要在某处保存[value for (key, value) in sorted(dict.items())]
。其次,如果你想按值排序,只需用dict.values()获取值并对它们进行排序。
如果在排序之前需要对值进行更多处理,可以使用sorted(values, key=somefunction)
,其中某个函数将是一个处理该值的函数,以便对其进行正确排序,将其转换为整数,例如,这些数值是多年,你想用数字对它们进行排序。