Как условно заменить ключ, используя диктовку - PullRequest
1 голос
/ 16 апреля 2019

У меня есть словарь

d={'user': 'bala', 'password': 'pass', 'filetype': 'as-parquetfile'}

все ключи должны иметь префикс --, кроме filetype, который должен быть заменен на --, чтобы получить

{'--user': 'bala', '--password': 'pass', '--': 'as-parquetfile'}

ЕслиЯ делаю ниже, я получаю синтаксическую ошибку.

{'--'+k:v if k!='filetype' else '--':v for (k,v) in d.items()}

Ответы [ 2 ]

6 голосов
/ 16 апреля 2019

Часть key: value в понимании dict не является выражением, поэтому вы не можете использовать троичный оператор непосредственно с ним.Что вы можете сделать, это:

{('--'+k if k!='filetype' else '--'): v for (k,v) in d.items()}

2 голосов
/ 16 апреля 2019

Грязный способ, которым я люблю пользоваться:

d = {'user': 'bala', 'password': 'pass', 'filetype': 'as-parquetfile'}
d = {"--" + (k, "")[k=="filetype"]: v for k, v in d.items()}
d
>>> {'--': 'as-parquetfile', '--password': 'pass', '--user': 'bala'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...