Решение на Пет малки функции от Aнтония Чекръкчиева

Обратно към всички решения

Към профила на Aнтония Чекръкчиева

Резултати

  • 10 точки от тестове
  • 1 отнета точка
  • 9 точки общо
  • 19 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def extract_type(charecters, type):
return ''.join([str(char) * count for char,
count in charecters if isinstance(char, type)])
def reversed_dict(elements):
return {elements[keys]: keys for keys in elements}
def flatten_dict(elements, separator='.', prefix=''):
return {prefix + separator + k if prefix else k: v
for key, value in elements.items()
for k, v in flatten_dict(value, separator, key).items()
} if isinstance(elements, dict) else {prefix: elements}
def unflatten_dict(elements):
resultDict = {}
for key, value in elements.items():
d = resultDict
if '.' in key:
keys = key.split(".")
for part in keys[:-1]:
if part not in d:
d[part] = {}
d = d[part]
d[keys[-1]] = value
else:
d[key] = value
return resultDict
def tuple_without(original_tuple, element_to_remove):
return tuple(filter(lambda el: el != element_to_remove, original_tuple))
def reps(elements):
return tuple([x for x in elements
if len(tuple_without(elements, x)) + 1 < len(elements)])

Лог от изпълнението

...................
----------------------------------------------------------------------
Ran 19 tests in 0.155s

OK

История (2 версии и 1 коментар)

Aнтония обнови решението на 19.03.2015 04:48 (преди над 9 години)

+def extract_type(args, type):
+ return ''.join([char * count for char,
+ count in args if isinstance(char, type)])
+
+
+def reversed_dict(args):
+ return {args[keys]: keys for keys in args}
+
+
+def flatten_dict(args, separator='.', prefix=''):
+
+ return {prefix + separator + k if prefix else k: v
+ for key, value in args.items()
+ for k, v in flatten_dict(value, separator, key).items()
+ } if isinstance(args, dict) else {prefix: args}
+
+
+def unflatten_dict(args):
+ resultDict = {}
+ for key, value in args.items():
+ d = resultDict
+ if '.' in key:
+ keys = key.split(".")
+ for part in keys[:-1]:
+ if part not in d:
+ d[part] = {}
+ d = d[part]
+ d[keys[-1]] = value
+ else:
+ d[key] = value
+ return resultDict
+
+
+def tuple_without(original_tuple, element_to_remove):
+ return tuple(filter(lambda el: el != element_to_remove, original_tuple))
+
+
+def reps(args):
+ return tuple([x for x in args
+ if len(tuple_without(args, x)) + 1 < len(args)])
  • Тествай extract_type с различни типове
  • Не пиши едноредови if-ове, които не се събират на един ред
  • Измисли по-добри имена от d и el
  • В Python името args се използва за подаването на позиционни аргументи, ти знаеш конкретно колко и какви аргументи очакваш

Aнтония обнови решението на 23.03.2015 15:32 (преди над 9 години)

-def extract_type(args, type):
- return ''.join([char * count for char,
- count in args if isinstance(char, type)])
+def extract_type(charecters, type):
+ return ''.join([str(char) * count for char,
+ count in charecters if isinstance(char, type)])
-def reversed_dict(args):
- return {args[keys]: keys for keys in args}
+def reversed_dict(elements):
+ return {elements[keys]: keys for keys in elements}
-def flatten_dict(args, separator='.', prefix=''):
+def flatten_dict(elements, separator='.', prefix=''):
return {prefix + separator + k if prefix else k: v
- for key, value in args.items()
+ for key, value in elements.items()
for k, v in flatten_dict(value, separator, key).items()
- } if isinstance(args, dict) else {prefix: args}
+ } if isinstance(elements, dict) else {prefix: elements}
-def unflatten_dict(args):
+def unflatten_dict(elements):
resultDict = {}
- for key, value in args.items():
+ for key, value in elements.items():
d = resultDict
if '.' in key:
keys = key.split(".")
for part in keys[:-1]:
if part not in d:
d[part] = {}
d = d[part]
d[keys[-1]] = value
else:
d[key] = value
return resultDict
def tuple_without(original_tuple, element_to_remove):
return tuple(filter(lambda el: el != element_to_remove, original_tuple))
-def reps(args):
- return tuple([x for x in args
+def reps(elements):
- if len(tuple_without(args, x)) + 1 < len(args)])
+ return tuple([x for x in elements
+ if len(tuple_without(elements, x)) + 1 < len(elements)])