2009-07-02 83 views
21

Ok, tôi đang cố gắng lọc danh sách/từ điển được chuyển cho tôi và "dọn dẹp" nó một chút, vì có một số giá trị nhất định mà tôi cần phải loại bỏ.Thay thế các giá trị trong danh sách/từ điển Python?

Vì vậy, nếu nó đang tìm kiếm như thế này:

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

Làm thế nào tôi một cách nhanh chóng và dễ dàng chạy vượt qua tất cả và thay thế tất cả các giá trị của "AAA" với một cái gì đó như "XXX" không?

Tập trung vào tốc độ và tài nguyên vì đây có thể là danh sách dài và tôi không muốn quá trình này tốn quá nhiều thời gian.

Trả lời

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

Yep, mà làm việc như một nét duyên dáng. Tôi đã bỏ lỡ một trong những vòng lặp bên ngoài và nhận được danh sách/mục() lỗi ... cảm ơn bạn! –

10
dic = root['records'][0] 
for i, j in dic.items():  # use iteritems in py2k 
    if j == 'AAA': 
     dic[i] = 'xxx' 
Các vấn đề liên quan