Чтобы получить максимальный ключ / значение словаря stats
:
stats = {'a':1000, 'b':3000, 'c': 100}
>>> max(stats.items(), key = lambda x: x[0])
('c', 100)
>>> max(stats.items(), key = lambda x: x[1])
('b', 3000)
Конечно, если вы хотите получить только ключ или значение из результата, вы можете используйте индексирование кортежей. Например, чтобы получить ключ, соответствующий максимальному значению:
>>> max(stats.items(), key = lambda x: x[1])[0]
'b'
Объяснение
Метод словаря items()
в Python 3 возвращает объект view словаря. Когда этот объект представления итерируется, функцией max
, он выводит словарные элементы как кортежи формы (key, value)
.
>>> list(stats.items())
[('c', 100), ('b', 3000), ('a', 1000)]
Когда вы используете lambda
выражение lambda x: x[1]
, на каждой итерации x
является одним из этих наборов (key, value)
. Таким образом, выбрав правильный индекс, вы выбираете, хотите ли вы сравнивать по ключам или значениям.
Python 2
Для релизов Python 2.2+ будет работать тот же код. Однако лучше использовать словарь iteritems()
вместо items()
.
Примечания
Одна вещь, которую вы могли бы сделать, это установить языковой режим по умолчанию для новых файлов:
"files.defaultLanguage": "javascriptreact",
В противном случае есть хакерский способ, который работает хорошо. Вам понадобится расширение макроса, например multiCommand .
Вот ваш макрос, который входит в ваши настройки:
{
"command": "multiCommand.languageMode",
"sequence": [
// make a new untitled file - you may or may not want this
"workbench.action.files.newUntitledFile",
{
"command": "editor.action.insertSnippet",
"args": {
"name": "new React Pure"
}
},
"workbench.action.editor.changeLanguageMode",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.acceptSelectedQuickOpenItem"
]
},
Есть 27 quickOpenNavigateNext
основанных на том, как далеко вниз на панели быстрого выбора языкового режима я должен прокрутить, чтобы добраться до [ 115]. Ваш пробег может отличаться, если вы добавили языковые режимы по умолчанию.
Сначала этот макрос вставляет фрагмент "new React Pure"
из вашего вопроса.
Затем свяжите этот макрос с некоторым брелоком и запустите его. Он создаст новый файл без названия, установит его языковой режим на "javascriptreact"
и введет ваш готовый к редактированию фрагмент кода реакции.
{
"key": "ctrl+shift+/",
"command": "multiCommand.languageMode",
},
Это немного мучительно, но я не знаю, как программно обеспечить ввод данных на панель быстрого выбора.
Но я полагаю, что расширение - это действительно путь. Вот этот API, который будет полезен:
openTextDocument({ language: 'javascriptreact' })
, но я не верю, что эту команду можно вызвать без использования расширения.