Skip to content

Instantly share code, notes, and snippets.

@Suor
Created March 15, 2013 07:57
Show Gist options
  • Save Suor/5168198 to your computer and use it in GitHub Desktop.
Save Suor/5168198 to your computer and use it in GitHub Desktop.
Dict comprehension review
errors = {}
for key, value in bundle.data.items():
if not some_test(value):
if key not in errors:
errors[key] = []
errors[key].append('required.')
# R1: использовать defaultdict
from collections import defaultdict
errors = defaultdict(list)
for key, value in bundle.data.items():
if not some_test(value):
errors[key].append('required.')
# R2: если это нормальный словарь, то ключи повторятся не будут,
# а следовательно проверка на наличие не нужна
errors = {}
for key, value in bundle.data.items():
if not some_test(value):
errors[key] = ['required.']
# R3: использовать dict comprehension
errors = {key: ['required.'] for key, value in bundle.data.items() if not some_test(value)}
# R3a: можно форматировать как больше нравится
errors = {key: ['required.'] for key, value in bundle.data.items()
if not some_test(value)}
errors = {key: ['required.']
for key, value in bundle.data.items()
if not some_test(value)}
errors = {
key: ['required.']
for key, value in bundle.data.items()
if not some_test(value)
}
# R3b: python 2.6- не поддерживает dict comprehension:
# используем dict() + генераторное выражение
errors = dict((key, ['required.']) for key, value in bundle.data.items() if not some_test(value))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment