2009-07-02 177 views
21

好吧,我想过滤一个传递给我的列表/字典并“清理”它一点,因为它有一些我需要摆脱的值。替换Python列表/字典中的值?

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

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

我将如何快速,轻松地通过这一切运行,并有类似“XXX”替换“AAA”的所有值?

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

回答

28
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'}]} 
+0

是的,这工作就像一个魅力。我错过了一个外部循环,并得到列表/项目()错误...谢谢! – 2009-07-02 20:55:01

10
dic = root['records'][0] 
for i, j in dic.items():  # use iteritems in py2k 
    if j == 'AAA': 
     dic[i] = 'xxx'