2009-07-02 20 views
21

Tamam, bana iletilen bir listeyi/sözlüğü filtrelemeye çalışıyorum ve "temizlemem" gerekiyor, çünkü bunlardan kurtulmam gereken belirli değerler var.Python listesinde/sözlüğündeki değerlerin değiştirilmesi?

Yani, bu gibi bakıyor eğer:

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

nasıl hızlı ve kolay bir şeyin içinden çalıştırın ve "XXX" gibi bir şeyle "AAA" bütün değerlerini yerini alacak?

Odak uzun kaynak olabileceğinden ve bu işlemin çok fazla zaman tüketmesini istemediğinden hız ve kaynaklara odaklanıyor. mükemmel çalıştı

cevap

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

Evet,. Dış döngülerden biri eksik ve liste/item() hatası alıyorum ... teşekkür ederim! –

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