홈>
부트 캠프 준비 과정에서 문제가 발생했습니다. 문제는 사전에 인수로 사용하는 함수를 사용하고 키 중 하나의 값 유형을 확인한 다음 조건이 충족되면 해당 값을 업데이트하려고합니다. 이 기능은 사전 목록에서 특정 목록 요소가 제공 될 때 효과적입니다.
이 함수를 맵에 중첩하여 함수를 하나의 특정 요소를 전달하는 대신 전체 사전 목록에 적용하려고하면 문제가 발생합니다.
이전 자료에서 설명했듯이 괄호없이 첫 번째지도 인수로 함수를 제공하려고 시도한 후 이터레이터를 색인이없는 사전의 기본 목록으로 설정하려고 시도했습니다. :] 슬라이스, [0 : len {list)] 슬라이스, [0 : 2] 슬라이스로서 모두 사용할 수 없습니다.
# list of dictionaries to be updated, trimmed to 3 for brevity
restaurants = [{'name': 'Fork & Fig',
'price': '$$',
'is_closed': False,
'review_count': 610},
{'name': 'Salt And Board',
'price': '$$',
'is_closed': False,
'review_count': 11},
{'name': 'Stripes Biscuit',
'price': '$$',
'is_closed': True,
'review_count': 20}]
#function in question, changes the $ strings to numbers
def format_restaurant(restaurant):
if type(restaurant['price']) == str:
restaurant['price'] = len(restaurant['price'])
return restaurant
# inputting a single dictionary entry works great:
format_restaurant(restaurants[1]) # {'is_closed': False, 'name': 'Fork & Fig', 'price': 2, 'review_count': 610}
# Here comes the sticking point. The directions are:
#"Now write another function called map_format_restaurants using map, that
# uses above function and returns a list of restaurants with each of them
# formatted with price pointing to the respective number."
# My answer that I think should work, but doesn't:
def map_format_restaurants(restaurants):
map(format_restaurant, restaurants)
return restaurants
# When this function is called, the list of dictionaries comes out just as it went in:
map_format_restaurants(restaurants)
사전 목록에서 각 'price'키 값에 대해 코드가 '$'를 1로 또는 '$$'를 2로 변경하기를 원하지만 그중 아무것도 변경되지 않습니다. 오류 메시지가 표시되지 않습니다.
목록의 마지막 dict 항목보기 :
{'name': 'Stripes Biscuit',
'price': '$$',
'is_closed': True,
'review_count': 20}]
로 변경해야합니다 :
{'name': 'Stripes Biscuit',
'price': 2,
'is_closed': True,
'review_count': 20}]
대신 들어간 것처럼 나왔습니다.
나는 이것이 누군가에게 좋은 소프트볼이라고 확신하지만, 나는 그것을 칠 수 없다. 모든 통찰력은 대단히 감사하겠습니다.
- 답변 # 1
- 답변 # 2
for
새로운 목록을 만듭니다. 기존 목록을하지 않습니다. 따라서 함수를 다음과 같이 수정하십시오 :def format_restaurant(restaurant): ... # no return value for restaurant in restaurants: format_restaurant(restaurant)
마찬가지로이 함수의 반환 값을 할당해야합니다 :
map()
def map_format_restaurants(restaurants): return map(format_restaurant, restaurants)
관련 자료
- python - Pandas에서 정규식을 사용하여 특정 열에서만 열 값 바꾸기
- SQL Server에서 Python을 사용하여 테이블의 열 값 업데이트
- jquery - AJAX 및 모달을 사용하여 PHP에서 MySQL 레코드 업데이트
- ubuntu - 클라우드 초기화 구성을 사용하여/etc/ssh/sshd_config의 기본값 변경
- ubuntu16.04 - 클라우드 초기화 구성을 사용하여/etc/ssh/sshd_config의 기본값 변경
- python - Pandas Series 개체는 값을 업데이트하지 않습니다
- directx - id3d11devicecontext - : map을 사용하여 동적 텍스처를 업데이트하면 오프셋 또는 불완전한 데이터가 발생합니다
- python - while 루프를 사용하여 목록에서 선택한 값을 인쇄하는 방법
- sqlite - SQL을 사용하여 키 및 열 값에 따라 값을 재귀 적으로 생성
- r - 파이프 라인 내의 식별자 열을 사용하여 최대 값이있는 새 열 만들기
- python - 목록 이해를 사용하여 목록을 값으로 사용하는 사전 빌드
- excel - 배열 및 범위를 사용하여 값을 바꾸는 방법은 무엇입니까?
- anaconda - Mac OS에서 conda를 사용하여 pandas 라이브러리를 어떻게 업데이트합니까?
- dart - Contacts_services 패키지를 사용하여 Flutter에서 Iterable 전화 값을 얻는 방법은 무엇입니까?
- python - PySpark의 열 조건을 사용하여 Null 값이 대체되지 않음
- python - groupby를 사용하여 목록에 값을 추가하는 방법은 무엇입니까?
- python - 람다 함수를 사용한 Groupby 및 집계
- sql - 조인을 사용하여 다른 열의 데이터로 테이블의 열 업데이트
- sql - TSQL을 사용하여 JSON의 목록에서 값 검색
- Java를 사용하여 JSON 값을 업데이트하는 방법
관련 질문
- Python argparse는 인수에 1 개 이상의 매개 변수를 설정합니다.
- 사전 /배열에 대한 Python 클래스 속성
- python : csv 데이터를 읽고 API 페이로드에서 사용하여 올바른 JSON을 형성하는 방법
- python : 마지막 튜플 인덱스에 따라 사전 정렬
- python : 파이썬의 사전에서 가능한 경우 문자열을 정수 또는 부동 소수점으로 변환하는 방법은 무엇입니까?
- 새 사전 또는 목록에 대한 Python 사전 목록
- python : dict (정수 값 포함)를 json으로 변환
- python : AWS Secrets Manager에 저장된 API 자격 증명을 EC2로 가져 오면 오류가 계속 발생합니다.
- python : 파이썬의 다른 사전 목록에서 목록 사전의 키 값 검색
- python : 모든 값을 유지하면서 동일한 키를 가진 2 개의 사전을 연결하는 방법은 무엇입니까?
파이썬 3에서
map
게으른 발전기입니다. 함수를 사용할 때, 즉 요소를 요청할 때만 함수를 실행합니다. 그것이 일어날 때까지, 그것은 단지map
로 거기 앉아 대기 중입니다.map
를 소비하는 상당히 표준적인 방법list
를 구축하는 것입니다 그것에서 :이것은 완전히 새로운 목록을 만들지 만 기존 목록을 그 자리에서 수정한다는 것을 기억하십시오. 즉, 새 목록을 작성할 필요가 없으며 부작용에 대해서만 반복자를 사용하는 경우 알고있는 가장 빠른 방법을 사용할 수 있습니다.
와이즈 비즈 매개 변수는
그러나 pyzwyz에 대한 리턴 값을 가지면서 모든 것을 적절하게 수정하고 있다고 가정하면 다소 비유 론적입니다. 간단한maxlen
를 보장합니다 iterator를 사용할 때 비워 둡니다.deque
를 사용하는 것이 좋습니다 대신 루프 :