Я сталкивался с этой проблемой несколько раз и, похоже, не могу найти простое решение.
Скажи, у меня есть строка
string = "a=0 b=1 c=3"
Я хочу преобразовать это в словарь с ключами a, b и c, а 0, 1 и 3 - их соответствующими значениями (преобразованными в int) Очевидно, я могу сделать это:
list = string.split()
dic = {}
for entry in list:
key, val = entry.split('=')
dic[key] = int(val)
Но мне не очень нравится этот цикл, он кажется настолько простым, что вы сможете преобразовать его в какое-то выражение для понимания списка. И это работает для немного более простых случаев, когда val
может быть строкой.
dic = dict([entry.split('=') for entry in list])
Однако мне нужно конвертировать val в int на лету, и делать что-то подобное синтаксически некорректно.
dic = dict([[entry[0], int(entry[1])] for entry.split('=') in list])
Итак, мой вопрос: есть ли способ устранить цикл for, используя понимание списка? Если нет, то есть ли какой-нибудь встроенный метод python, который сделает это для меня?