2017-11-10 7 views
0

나는 더 많은 pythonic 또는 더 간결한 방법을 쓰려고하고 너무 많은 for 루프를 작성하는 것을 피합니다.목록을 반복하면서 각 루프 변수에 사전을 업데이트하는 Pythonic 방법이 있습니까?

result = {} 
for model_name in list_of_model_names: 
    model_fields = _do_something(model_name) 
    result['{}_fields'.format(model_name)] = model_fields 
return result 

은 본질적으로, 내가 문자열 목록을 통해 반복하고 있습니다 :

는 기본적으로 나는 다음과 같은 블록 코드가 있습니다. 각 문자열 나는 ​​어떤 동작을 수행하여 그 문자열의 일부 파생물이 사전의 키와 값 쌍이되도록합니다.

  1. 지도
  2. 필터가 내 네이티브 데이터 형식을 반환합니다 같은
  3. 외모를 줄 요소의 수를 감소 목록을 반환

    내가 http://www.u.arizona.edu/~erdmann/mse350/topics/list_comprehensions.html

    을 읽고있다 나는 알고 그 목록. 어쩌면 원래 목록에 따라 문자열이나 번호가 올 수도 있습니다.

내 코드가 작동 중입니다. 목록을 반복하면서 루프 변수가 키와 값의 사전에 영향을 주도록 간결하게 또는 더 평범한 방법이 있는지 궁금합니다.

+2

'{'{} _fields'.format (m) : list_of_model_names의 m에 대해 _do_something (m)'을 사용 하시겠습니까? –

답변

2

일반적으로 더 Python적인 방법은 map, filterreduce을 사용하지 않고 보완법을 사용하는 것입니다.

코드에 대한

, 그 또한 목록 및 세트를 위해 일할 수

result = {'{}_fields'.format(model_name): _do_something(model_name) 
      for model_name in list_of_model_names} 

함축 될 것입니다.

2

당신은 사용하여 더 간결 수 있습니다

result = {(name+'_fields'): _do_something(name) for name in list_of_model_names} 
이 더 읽기이든

, 또는 유용하지만 당신에게 달려 있습니다.