用零或字符串替换字典值中的所有整数

时间:2019-03-09 17:41:45

标签: python python-3.x dictionary replace

这就是我所拥有的:

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 个答案:

答案 0 :(得分:3)

您可以通过词典理解来做到这一点:

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 :(得分:1)

您可以使用字典和列表理解功能

{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。您可以将其修改为所需的任何内容。

答案 2 :(得分:0)

这应该可以解决问题:

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