解压一些值,然后像JS一样收集其余的值?

2024-04-24 17:00:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在Javascript中,我们可以执行const {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40};,而rest将是{c: 30, d: 40}

在Python中有什么方法可以做到这一点吗

我可以使用itemgetter来实现类似的功能

dic = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
a, b = itemgetter('a', 'b')(dic)

我们如何将rest key val对收集到rest

============

这是我能做的最好的:

>>> dic = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> a, b = [dic.pop(i) for i in ['a', 'b']]
>>> a
10
>>> b
20
>>> dic
{'c': 30, 'd': 40}

Tags: 方法keyin功能restforvaljavascript
2条回答

简单的方法是使用allpop减去2字典

dic = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
ab = {'a': dic.get('a'), 'b': dic.get('b')}
rest = dic
all(map(rest.pop, ab))   # function all() works for Python 2 and 3.

print(ab)
print(rest)

结果将是

{'a': 10, 'b': 20}
{'c': 30, 'd': 40}

如果您不需要保留原始dict,那么您的解决方案已经起作用了。以防万一,如果您想将它们放在同一行中:

dic = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
a, b, rest = [dic.pop(i) for i in ("a", "b")] + [dic]
print(a, b, rest)

输出:

10 20 {'c': 30, 'd': 40}

相关问题 更多 >