2009-07-02 22 views
21

ठीक है, मैं मुझे पास की गई एक सूची/शब्दकोश को फ़िल्टर करने की कोशिश कर रहा हूं और इसे थोड़ा "साफ़" कर रहा हूं, क्योंकि इसमें कुछ निश्चित मूल्य हैं जिन्हें मुझे छुटकारा पाने की आवश्यकता है।पायथन सूची/शब्दकोश में मानों को बदलना?

इसलिए, यह इस तरह लग रही है, तो:

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

मैं कैसे जल्दी और आसानी से यह सब के माध्यम से चलाने के लिए और "XXX" की तरह कुछ के साथ "एएए" के सभी मूल्यों को बदलने के हैं?

फोकस गति और संसाधनों पर है, क्योंकि ये लंबी सूची हो सकती हैं और मैं नहीं चाहता कि यह प्रक्रिया बहुत अधिक समय का उपभोग करे।

उत्तर

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

हाँ, कि एक आकर्षण की तरह काम किया। मैं बाहरी लूपों में से एक खो रहा था और सूची/आइटम() त्रुटि प्राप्त कर रहा था ... धन्यवाद! –

10
dic = root['records'][0] 
for i, j in dic.items():  # use iteritems in py2k 
    if j == 'AAA': 
     dic[i] = 'xxx' 
संबंधित मुद्दे