有什么方法可以像js中的es6一样,在python中分解一个dict?

问题描述 投票:0回答:1

如果我有一个这样的dict。

 dict1 =  {'version': 0, 'name': 'JSESSIONID', 'value': 'AFCF8A9D8AB9E7B701A4D60EE7D8C475.prdaccountc-108', 'port': None, 'port_specified': False, 'domain': 'signin.ea.com', 'domain_specified': False, 'domain_initial_dot': False, 'path': '/p', 'path_specified': True, 'secure': True, 'expires': None, 'discard': True, 'comment': None, 'comment_url': None, 'rfc2109': False, '_rest': {'HttpOnly': None, 'SameSite': 'None'}}

我想对这个dict进行反结构并得到它的值,就像这样:

version, name, value = dict1

而不是这样做:

version = dict1["version"]
name = dict1["name"]
value = value["value"]

当我尝试这样做时,我得到了ValueError: Too many values to unpack(太多值无法解包)

python destructuring
1个回答
2
投票

你可以使用 dict.values()确保顺序是你想要的(Python >=3.6)。

version, name, value = dict1.values()

如果dict1的长度大于receiver的数量,请尝试。

version, name, value, *other = dict1.values()

0
投票
from operator import itemgetter

params = {'a': 1, 'b': 2}

a, b = itemgetter('a', 'b')(params)

以及使用一个内置的库。


0
投票

你可以使用 **kwargs 在一个函数内。

def destructor(**kwargs):
    # You can access any of your dict keys directly
    # For example:
    print(port, value)

destructor(dict1) # output: AFCF8A9D8AB9E7B701A4D60EE7D8C475.prdaccountc-108 None
© www.soinside.com 2019 - 2024. All rights reserved.