如何对已经按降序排序的字典进行排序,使平均值相近的人按字母顺序出现?
How to sort a dictionary that is already sorted in descending order, so that the people with similar averages appear in alphabetical order?
假设我们有一个人名和平均值的字典,按值(平均值)降序排列。我想以具有相似平均值的人按字母顺序出现的方式对字典进行排序。例如:
Ayda,19
Alex,18
Jack,17
George,17
Robbie,15
我想要得到这个输出:
Ayda,19
Alex,18
George,17
Jack,17
Robbie,15
我要修改以下代码:
def calculate_sorted_averages(file1, file2):
with open (r'C:\Users\sony\Desktop\Python with Jadi\file1.csv', 'r') as f1:
reader=csv.reader(f1)
d={}
for row in reader:
name=row[0]
average=float(row[1])
d[name]=average
sorted_dict=dict(sorted(d.items(), key=operator.itemgetter(1), reverse=False))
with open (r'C:\Users\sony\Desktop\Python with Jadi\file2.csv', 'w', newline='') as f2:
for key in sorted_dict.keys():
writer=csv.writer(f2)
writer.writerow([key,sorted_dict[key]])
我认为对字典的一部分进行排序会有所帮助,但我不知道如何拆分字典,按字母顺序排序,然后将其合并回一起。能帮忙解答下吗?
我建议 Sort 按反向 average
进行降序排列(因此 -1 * n
),然后按 name
按字母顺序排列.例如:
names_strng = """
Ayda,19
Alex,18
Jack,17
George,17
Robbie,15
"""
my_dct = dict(s.split(',') for s in names_strng.strip().split('\n'))
print(my_dct)
my_dct_srted = dict(sorted(my_dct.items(), key=lambda pare: (-float(pare[1]), pare[0])))
print(my_dct_srted)
输出:
{'Ayda': '19', 'Alex': '18', 'Jack': '17', 'George': '17', 'Robbie': '15'}
{'Ayda': '19', 'Alex': '18', 'George': '17', 'Jack': '17', 'Robbie': '15'}
假设我们有一个人名和平均值的字典,按值(平均值)降序排列。我想以具有相似平均值的人按字母顺序出现的方式对字典进行排序。例如:
Ayda,19
Alex,18
Jack,17
George,17
Robbie,15
我想要得到这个输出:
Ayda,19
Alex,18
George,17
Jack,17
Robbie,15
我要修改以下代码:
def calculate_sorted_averages(file1, file2):
with open (r'C:\Users\sony\Desktop\Python with Jadi\file1.csv', 'r') as f1:
reader=csv.reader(f1)
d={}
for row in reader:
name=row[0]
average=float(row[1])
d[name]=average
sorted_dict=dict(sorted(d.items(), key=operator.itemgetter(1), reverse=False))
with open (r'C:\Users\sony\Desktop\Python with Jadi\file2.csv', 'w', newline='') as f2:
for key in sorted_dict.keys():
writer=csv.writer(f2)
writer.writerow([key,sorted_dict[key]])
我认为对字典的一部分进行排序会有所帮助,但我不知道如何拆分字典,按字母顺序排序,然后将其合并回一起。能帮忙解答下吗?
我建议 Sort 按反向 average
进行降序排列(因此 -1 * n
),然后按 name
按字母顺序排列.例如:
names_strng = """
Ayda,19
Alex,18
Jack,17
George,17
Robbie,15
"""
my_dct = dict(s.split(',') for s in names_strng.strip().split('\n'))
print(my_dct)
my_dct_srted = dict(sorted(my_dct.items(), key=lambda pare: (-float(pare[1]), pare[0])))
print(my_dct_srted)
输出:
{'Ayda': '19', 'Alex': '18', 'Jack': '17', 'George': '17', 'Robbie': '15'}
{'Ayda': '19', 'Alex': '18', 'George': '17', 'Jack': '17', 'Robbie': '15'}