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

Posted

技术标签:

【中文标题】替换 Python 列表/字典中的值?【英文标题】:Replacing values in a Python list/dictionary? 【发布时间】:2010-11-07 18:32:21 【问题描述】:

好的,我正在尝试过滤传递给我的列表/字典并稍微“清理”一下,因为其中有一些我需要删除的值。

所以,如果它看起来像这样:

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

如何快速轻松地完成所有操作并将“AAA”的所有值替换为“XXX”之类的值?

重点是速度和资源,因为这些可能很长,我不希望这个过程消耗太多时间。

【问题讨论】:

【参考方案1】:

就我而言,在 字典理解 中使用 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']

【讨论】:

【参考方案2】:
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']

【讨论】:

是的,这就像一个魅力。我错过了一个外部循环并收到 list/items() 错误...谢谢!【参考方案3】:
dic = root['records'][0]
for i, j in dic.items():       # use iteritems in py2k
    if j == 'AAA':
        dic[i] = 'xxx'

【讨论】:

以上是关于替换 Python 列表/字典中的值?的主要内容,如果未能解决你的问题,请参考以下文章

Python - 从键替换特殊字符,字典中的值

python3循环遍历嵌套字典替换指定值

根据字典中的键值检查列表中的值,Python

将字典列表中的值映射到 Python 中的字符串

Python字典中的值为列表或字典的构造方法

Python 替换列表中的值