Замените все целые числа в значениях словаря нулями или строкой - PullRequest
1 голос
/ 09 марта 2019

Вот что у меня есть:

d1 = {"00f_5" :["AAA","AAC",3], 'oof_6': ["CCC",2,3]}

Мне бы хотелось:

d2 = {"00f_5" :["AAA","AAC",0], 'oof_6': ["CCC",0,0]}

d2 = {"00f_5" :["AAA","AAC",Ref], 'oof_6': ["CCC",Ref,Ref]}

Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 09 марта 2019

Вы можете сделать это, используя словарь:

d1 = {"00f_5" :["AAA","AAC",3], 'oof_6': ["CCC",2,3]}

out = {key: [value if not isinstance(value, int) else 0 for value in lst] 
           for key, lst in d1.items()}

print(out)
# {'00f_5': ['AAA', 'AAC', 0], 'oof_6': ['CCC', 0, 0]}

Для каждого подсписка мы используем понимание списка, сохраняя значение, если оно не является int, заменяя его (здесь на 0, но вы можете вместо него поставить строку).

1 голос
/ 09 марта 2019

Вы можете сделать это с помощью словаря и списка понимания

{i:[x if type(x)!=int else 0 for x in d1[i]] for i in d1}

выход:

{'00f_5': ['AAA', 'AAC', 0], 'oof_6': ['CCC', 0, 0]}

Вкратце, словарное понимание охватывает все ключи и вставляет в качестве значения понимание списка. Понимание списка охватывает все значения в исходном элементе (d1 [i]) и заменяет все целые числа на 0. Вы можете изменить это на любое значение.

0 голосов
/ 09 марта 2019

это должно сработать:

d1 = {"00f_5" :["AAA","AAC",3], 'oof_6': ["CCC",2,3]}

for key in d1:
    for i in range(len(d1[key])):
        if isinstance(d1[key][i], int):
            d1[key][i] = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...