语法 - Python如何给sorted里的key动态的传参数
大家讲道理
大家讲道理 2017-04-18 09:52:23
0
3
474
def sort(): return sorted(a,key=lambda x:(x['name'],x['age']),reverse=True)

就是说如果我传name就按name排序,如果传name和age就按照这两个key双重排序,如果传了三个key以此类推

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous (3)
左手右手慢动作
def sort(*arg): return sorted(a,key=lambda x,*arg:(x[y] for y in arg),reverse=True)

Selon votre modification, il n'a pas été testé. Vous pouvez le tester. J'espère que je l'ai écrit correctement.
Voici le résultat de mon test :

>>> a = {'a': {'a1': 1, 'a2': 2, 'a3': 3}, 'b': {'a1': 2, 'a2': 1, 'a3': 3}, 'c': {'a1': 1, 'a2': 1, 'a3': 3}} >>> sort('a1','a2') ['c', 'b', 'a']

On dirait qu'il n'y a rien de mal à ça

    伊谢尔伦

    Je ne sais pas si vous voulez ça,
    Comme suit, la première colonne de chaque tuple est le nom, la deuxième colonne est la note et la troisième colonne est l'âge
    Le but est de trier d'abord par classe, puis par âge Trier

    # coding: utf-8 from operator import itemgetter, attrgetter # 每个tuple中第一列是姓名,第二列是成绩,第三列是年龄 student = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10)] # 按照年龄排序 print(sorted(student, key=itemgetter(2))) # 先按照成绩排序,然后按照年龄排序 print(sorted(student, key=itemgetter(1, 2)))

    Référez-vous au contenu du livre de recettes Python
    Trier une liste de dictionnaires par un certain mot-clé
    Vous pouvez transmettre dynamiquement les paramètres comme suit

    rows = [ {'fname': 'Brian', 'lname': 'Jones', 'uid': 1010}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {'fname': 'Big', 'lname': 'Jones', 'uid': 1004} ] def my_sort(*args): print(sorted(rows, key=itemgetter(*args))) return sorted(rows, key=itemgetter(*args)) hello = my_sort('lname', 'uid') print('==' * 40) print(hello)

    La documentation pour l'opérateur est liée ci-dessous
    operator.itemgetter

      阿神

      La réponse au premier étage est problématique. Même si elle ne signalera pas d'erreur, elle n'a pas d'effet de tri

      Ce qui suit est une méthode réalisable après vérification :

      def sort(a, args): return sorted(a, key=lambda x: tuple(x[i] for i in args), reverse=True) dic_sorted = sort(lst, ['time', 'id', 'type'])

      args accepte une liste

        Derniers téléchargements
        Plus>
        effets Web
        Code source du site Web
        Matériel du site Web
        Modèle frontal
        À propos de nous Clause de non-responsabilité Sitemap
        Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!