본문 바로가기
파이썬

파이썬 목록에서 파이썬 찾기 객체

by º기록 2020. 10. 9.
반응형

사람들의 목록이 있습니다.

[
    {'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

 

 

반응형

댓글