필자는 이전에 파이썬 목록을 보았지만 파이썬의 한 줄로 할 수 있습니까?어떻게 한 줄로 작성할 수 있습니까?
errs = {}
for f in form:
if f.errors:
errs[f.auto_id] = f.errors
필자는 이전에 파이썬 목록을 보았지만 파이썬의 한 줄로 할 수 있습니까?어떻게 한 줄로 작성할 수 있습니까?
errs = {}
for f in form:
if f.errors:
errs[f.auto_id] = f.errors
errs = dict((f.auto_id, f.errors) for f in form if f.errors)
아마 내가 나쁜 생각 말하고 싶지만,하지만 "가독성 카운트."당 규칙 (PEP 20)로 될 수있다. :) 당신이 가지고있는 반면에
"평면이 중첩보다 낫다는."와 "스파 스가. 밀도보다 낫다", 그래서 그것을 맛 :)의 문제 같아요
파이썬 3.0 DICT 함축 등이있다 Steef에서 제공하는 답변의 짧은/더 읽을 수있는 형태 :
errs = {f.auto_id: f.errors for f in form if f.errors}
두 가지 방법이 꽤 읽을 수있는, 그러나 당신은 코드의 미래 테이너 생각한다. 때로는 명시 적으로 더 좋습니다. List comprehensions rule though :
하스켈 배경에서 오는 것은 더 짧은 것을 선호합니다. 나는 가끔 가독성이 더 가치가 있다는 것에 동의하지만,이 특별한 경우에는 그런 간단한 일로 네 줄을 보지 못한다. –
필자는 one-liner dict() 버전이 자체적으로 문서화되기 때문에 더 읽기 쉽다고 주장 할 것입니다. 이는 특정 키 - 값 쌍을 사용하여 사전을 만드는 것을 분명히 보여줍니다. 4- 라이너는 나쁘지는 않지만 "단지 dict을 만드는 것"이라고 말하면 조금 더 오래 걸립니다. –