Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有什么方法可以像js中的es6那样在python中解构dict?_Python_Destructuring - Fatal编程技术网

有什么方法可以像js中的es6那样在python中解构dict?

有什么方法可以像js中的es6那样在python中解构dict?,python,destructuring,Python,Destructuring,如果我有这样的口述: 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': '

如果我有这样的口述:

 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'}}
version, name, value = dict1
我想对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'}}
version, name, value = dict1
而不是这样做:

version = dict1["version"]
name = dict1["name"]
value = value["value"]
当我尝试这样做时,我得到了ValueError:太多的值无法解包

from operator import itemgetter

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

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

也可以使用内置库。

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


如果dict1的长度大于接收器的数量,请尝试:

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

您可以在函数中使用
**kwargs
销毁dict:

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

destructor(dict1) # output: AFCF8A9D8AB9E7B701A4D60EE7D8C475.prdaccountc-108 None

只有python>=3.6不起作用时才能保证Dict的顺序这是我的Dict::{'version':0,'name':'JSESSIONID','value':'AFCF8A9D8AB9E7B701A4D60EE7D8C475.prdaccountc-108','port':None,'port_specified':False,'domain':'sign.ea.com','domain_specified':False,'domain_initial_dot':False,'path':'/p','path_specified':True,'secure''expires':None,'discard','True,'discard':True,'True,'discard','Truec2109':False,_rest':{'HttpOnly':None,'SameSite':'None'}