2009-07-02 7 views
21

좋아, 나에게 전달 된 목록/사전을 필터링하려고하고 있는데, 약간의 값을 "제거"해야한다. 제거 할 필요가있는 값이 있기 때문이다.파이썬리스트/사전에서 값을 대체 하시겠습니까?

그래서,이 같은 찾고있는 경우 :

"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

네. 내가 바깥 루프 중 하나를 놓치고 목록/항목() 오류가 발생했습니다 ... 감사합니다! –

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