반응형
사람들의 목록이 있습니다.
[
{'name' : 'John', 'wins' : 10 },
{'name' : 'Sally', 'wins' : 0 },
{'name' : 'Fred', 'wins' : 3 },
{'name' : 'Mary', 'wins' : 6 }
]
이름 목록 ( [ 'Fred', 'Mary', 'Sally']
)을 사용하여 승리를 추가하고 있습니다. 이름이 이미 사람 목록에 있는지는 모르겠고, 그렇지 않은 경우 새 레코드를 삽입해야합니다. 현재 다음을 수행하고 있습니다.
name = 'John'
person = None
pidx = None
for p in people_list:
if p['name'] == name:
person = p
pidx = people_list.index(p)
break
if person is None:
person = {'name' : name, 'wins' : 0}
person['wins'] += 1
if pidx is None:
people_list.append(person)
else
people_list[pidx] = person
목록으로이 작업을 수행하는 더 좋은 방법이 있습니까? 이것을 MongoDB에 저장한다는 점을 감안할 때 dict
를 사용할 수 없습니다. 객체로 저장되므로 객체에 사용할 수없는 정렬 및 매핑에 기본 배열 함수를 사용하고 싶습니다.
해결 방법
여기서는 목록 이외의 구조를 사용하고 싶지 않다고 가정합니다. 업데이트 후 불필요하게 사전을 목록에 다시 작성하더라도 코드는 작동합니다. 사전은 참조로 복사되므로 업데이트하면 목록에서 업데이트 된 상태로 유지됩니다. 약간의 정리 작업 후에 코드는 다음과 같이 보일 수 있습니다.
def add_win(people_list, name):
person = find_person(people_list, name)
person['wins'] += 1
def find_person(people_list, name):
for person in people_list:
if person['name'] == name:
return person
person = {'name': name, 'wins': 0}
people_list.append(person)
return person
참조 페이지 https://stackoverflow.com/questions/5120391
반응형
'파이썬' 카테고리의 다른 글
파이썬에서 '참'과 '거짓' (0) | 2020.10.09 |
---|---|
파이썬 Python에서 'except Exception as e'와 'except Exception, e'의 차이점은 무엇입니까? (0) | 2020.10.09 |
파이썬 Python 2.7 용 scipy 설치 (0) | 2020.10.09 |
파이썬 Python에서 YAML 매핑을 OrderedDict로 어떻게로드 할 수 있습니까? (0) | 2020.10.09 |
파이썬 다른 값이 사용되지 않을 때 튜플에서 a 값 추출 (0) | 2020.10.09 |
댓글