在Python列表/字典中替换值?

22 投票
3 回答
86711 浏览
提问于 2025-04-15 12:38

好的,我想对一个传给我的列表或字典进行筛选,把里面的一些值“清理”掉,因为有些值是我需要去掉的。

比如,它的样子是这样的:

"records": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"...}]

那么,我该如何快速简单地遍历整个内容,把所有“AAA”的值替换成“XXX”呢?

我关注的是速度和资源,因为这些列表可能很长,我不想这个过程耗费太多时间。

3 个回答

0

在我看来,在字典推导式中使用if/else要比上面的答案快得多。下面,我给你提供了一个通用的例子,供你参考:

DATA = {"records_0": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"},
                      {"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"}],
        "records_1": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"}]}

Replaced_DATA = {k:[
{k_0:v_0 if v_0!='AAA' else 'XXX' for k_0,v_0 in v_.items()} for v_ in v] for k,v in DATA.items()}

这是输出结果:

Replaced_DATA
Out[1]. {'records_0': [{'key1': 'XXX', 'key2': 'BBB', 'key3': 'CCC', 'key4': 'XXX'}, 
                       {'key1': 'XXX', 'key2': 'BBB', 'key3': 'CCC', 'key4': 'XXX'}],
         'records_1': [{'key1': 'XXX', 'key2': 'BBB', 'key3': 'CCC', 'key4': 'XXX'}]}
11
dic = root['records'][0]
for i, j in dic.items():       # use iteritems in py2k
    if j == 'AAA':
        dic[i] = 'xxx'

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

29
DATA = {"records": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"}]}

for name, datalist in DATA.iteritems():  # Or items() in Python 3.x
    for datadict in datalist:
        for key, value in datadict.items():
            if value == "AAA":
                datadict[key] = "XXX"

print (DATA)
# Prints {'records': [{'key3': 'CCC', 'key2': 'BBB', 'key1': 'XXX', 'key4': 'XXX'}]}

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

撰写回答