Я хочу знать, как сортировать список словарей, где словарь имеет словарь в нем [дубликат]

Я использую Linq для очистки имен файлов. Вы можете легко расширить это, чтобы проверить допустимые пути.

  private static string CleanFileName (string fileName) {return Path.GetInvalidFileNameChars (). Агрегат (имя_файла, (текущий, c) = & gt;  ; current.Replace (c.ToString (), string.Empty));  }  

Обновить

Некоторые комментарии указывают, что этот метод не работает для них, поэтому я включил ссылку на фрагмент DotNetFiddle, чтобы вы могли проверить метод.

https://dotnetfiddle.net/nw1SWY

7
задан L-R 5 November 2012 в 20:21
поделиться

3 ответа

Используйте ключевое слово key для функции sorted() и sort() :

yourdata.sort(key=lambda e: e['key']['subkey'], reverse=True)

Демонстрация:

>>> yourdata = [{'key': {'subkey': 1}}, {'key': {'subkey': 10}}, {'key': {'subkey': 5}}]
>>> yourdata.sort(key=lambda e: e['key']['subkey'], reverse=True)
>>> yourdata
[{'key': {'subkey': 10}}, {'key': {'subkey': 5}}, {'key': {'subkey': 1}}]

Это предполагает, что все словари верхнего уровня имеют ключ key, который считается словарем с клавишей subkey.

См. Python Sorting HOWTO для получения более подробной информации и трюков.

12
ответ дан Martijn Pieters 16 August 2018 в 03:58
поделиться
sorted(yourdata, reverse=True)
0
ответ дан alexvassel 16 August 2018 в 03:58
поделиться
  • 1
    Я не запустил это, но вы поймете, что dict как итеративный возвращает ключи, поэтому вы не получите полезный список – Jon Clements♦ 5 November 2012 в 20:32
  • 2
    не понимаю. выход так же, как и просили. – alexvassel 5 November 2012 в 20:35
  • 3
    @alexvassel: вывод в примере с примером simple бывает одним и тем же, но если у любого словаря есть дополнительный ключ, результаты будут very разными действительно , Я не ответил на ваш ответ, но он является некорректным для этой учетной записи. – Martijn Pieters♦ 5 November 2012 в 20:41
  • 4
    Я это знаю, но почему они меня опрокинули?)) – alexvassel 5 November 2012 в 20:54
  • 5
    Иногда случается так, что вопрос меняется, хотя в некотором смысле это правильный ответ ... Я бы не стал беспокоиться об этом ... то есть: вы публикуете рабочее решение, а затем вдруг возникает вопрос. и ваше решение не работает ... Некоторые люди будут ниспровергать, а другие будут комментировать, что это не работает и почему (я предпочитаю последнее) ... – Jon Clements♦ 5 November 2012 в 21:01

Предполагая, что вы хотите сортировать по значению d['key']['subkey'] для каждого словаря d в списке, используйте это:

sorted(yourdata, key=lambda d: d.get('key', {}).get('subkey'), reverse=True)
0
ответ дан Platinum Azure 16 August 2018 в 03:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: