簡體   English   中英

如何對已經按降序排序的字典進行排序,以使具有相似平均值的人按字母順序出現?

[英]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]])

我認為對字典的一部分進行排序會有所幫助,但我不知道如何拆分字典,按字母順序對其進行排序,然后將其重新合並在一起。 你能幫忙弄清楚嗎?

我會建議按反向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'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM