首先按键然后按值对搁置文件进行排序。没有导入模块

Sorting a shelve file first by key then by value. No imported module

所以我正在用 CSV 文件中的信息创建一些 objects:

def ajouter_morceaux_csv(db,csv):
    data_csv= read_data(csv)

    for i in range(len(data_csv[0])):
        titre = data_csv[0][i]
        année = data_csv[1][i]
        artistes = data_csv[2][i]
        style= data_csv[3][i]
        guitare = data_csv[4][i]
        note = data_csv[5][i]
        with shelve.open(db) as db_data:
            del(db_data[str(data_csv[0][i])])
            db_data[str(data_csv[0][i])]= Data_Song(titre,année,artistes,style,guitare,note=note)

然后我需要打印这个"database"。我需要打印它,首先按标题字母顺序排序,然后按 "note"

的值排序

我使用标题作为键名,这样可以更简单,但我仍然不知道如何按 object.

的价值注释对其进行排序

我是这样打印的:

def afficher_tout(db):
    with shelve.open(db) as db_data:
        klist = list(db_data.keys())
        klist.sort()
        print("Base de données musicales complète :")
        print()
        for key in klist:
            print("Titre: " + str(db_data[key].titre))
            print("Année: " + str(db_data[key].année))
            print("Artistes: " + str(db_data[key].artistes))
            print("Style: " + str(db_data[key].style))
            print("Guitare: " + str(db_data[key].guitare))
            print("note: " + str(db_data[key].note))
            print()

除了搁置,我无法将任何模块导入该项目,os,sys

您可以为 .sort()sorted() 提供按键功能。

klist = sorted(db_data.keys(), key=lambda k: (db_data[k].titre, db_data[k].note))