Я использую Linq для очистки имен файлов. Вы можете легко расширить это, чтобы проверить допустимые пути.
private static string CleanFileName (string fileName) {return Path.GetInvalidFileNameChars (). Агрегат (имя_файла, (текущий, c) = & gt; ; current.Replace (c.ToString (), string.Empty)); }
Некоторые комментарии указывают, что этот метод не работает для них, поэтому я включил ссылку на фрагмент DotNetFiddle, чтобы вы могли проверить метод.
Используйте ключевое слово 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 для получения более подробной информации и трюков.
dict
как итеративный возвращает ключи, поэтому вы не получите полезный список
– Jon Clements♦
5 November 2012 в 20:32
Предполагая, что вы хотите сортировать по значению d['key']['subkey']
для каждого словаря d
в списке, используйте это:
sorted(yourdata, key=lambda d: d.get('key', {}).get('subkey'), reverse=True)