LINUX.ORG.RU

Python and Object.assign

 ,


0

1

Не знаю, зачем оно, но вот (наверное, потому что такое на глаза не попадалось):

from functools import reduce


def assign(target, *sources):
    def _update(target, source):
        target.update(source)
        return target

    return reduce(
        _update, filter(lambda x: isinstance(x, dict), sources), target)
>>> obj = {'a': 1}
>>> copy = assign({}, obj)
>>> copy
{'a': 1}
>>> obj1 = {'a': 0, 'b': {'c': 0}}
>>> obj2 = assign({}, obj1)
>>>
>>> obj1['a'] = 1
>>> obj1
{'a': 1, 'b': {'c': 0}}
>>>
>>> obj2['a'] = 2
>>> obj2
{'a': 2, 'b': {'c': 0}}
>>>
>>> obj2['b']['c'] = 3
>>> obj1
{'a': 1, 'b': {'c': 3}}
>>> obj2
{'a': 2, 'b': {'c': 3}}
>>> assign({'a': 1}, {'a': 2}, {'a': 3})
{'a': 3}
>>> assign({'a': 1}, None, {'b': 2}, 4)
{'a': 1, 'b': 2}
★★★★★

Последнее исправление: vvn_black (всего исправлений: 1)

Не проще просто JavaScript использовать?

anonymous
()
def tree(): return collections.defaultdict(tree)
pawnhearts ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.