Можете ли вы предоставить понятный способ написания кода ниже - PullRequest
0 голосов
/ 22 января 2020
d = {'a':1,'b':2,'c':3,'d':4}
d = { k + 'c' : v * 2 for k : v in d.items() if v > 2}

Выход

{ 'cc': 6 , 'dc': 8}

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Понятия довольно просты для преобразования в обычный код (и наоборот). Вы можете сделать это на месте, используя метод pop:

d = {'a':1,'b':2,'c':3,'d':4}
for k in list(d.keys()):
    v = d.pop(k)
    if v > 2:
        d[k + 'c'] = v * 2
print(d)

Дает:

{'cc': 6, 'dc': 8}
0 голосов
/ 22 января 2020

Это словарное понимание эквивалентно:

# Set up a new dictionary to hold the result
d_new = {}
# Iterate over key/value pairs
for k, v in d.items():
    # If the value is greater than 2
    if v > 2:
        # Append to the new dictionary as required.
        d_new[k + 'c'] = v*2

Вывод:

>>> d_new
{'cc': 6, 'dc': 8}
...