为什么此字典解压缩不起作用

时间:2019-02-19 04:09:59

标签: python python-3.x

以下代码有效:

>>> stack = ['a','b','c']

>>> top, *stack = stack

>>> top

'a'
>>> stack

['b', 'c']

但是为什么这不起作用?

>>> dict1={'a':1, 'b':2, 'c':3}

>>> x, **dict1=dict1

SyntaxError: invalid syntax

我不应该期望x = {'a':1}和dict1 = {'b':2,'c':3}吗?

2 个答案:

答案 0 :(得分:2)

如果您希望使用字典解压缩,可以执行以下操作:(使用Python3.7)

int mappedCount = (from product in products 
                   from productMapping in DbContext.ProductCategoryMappings 
                                                   .Where(x => product.TenantId == x.TenantId.ToString() && 
                                                               x.ProductId.ToString().ToUpper() == product.ProductGuid.ToUpper()) 
                   join tenantCustMapping in DbContext.TenantCustCategories 
                        on productMapping.Value equals tenantCustMapping.Id 
                   select 1).ToList().Sum();

>>> dict1={'a':1, 'b':2, 'c':3} >>> x, *dict1=dict1.items() >>> x ('a', 1) >>> dict1 [('b', 2), ('c', 3)] ,以dict1.items()对的形式返回一个元组列表,其中每个元组包含2个元素。因此,如果您希望将解压后的值转换回字典,则必须执行以下操作->

(key, value)

但是,当打开元组列表时,>>> x = [x] # x = list(x), won't work for you, because it converts tuple into a list. # What is actually want is the tuple to be an element of the list. >>> x # And it works like a charm! [('a', 1)] 包含一个长度为2的列表,这两个都是元组。因此,将其转换为字典是相当简单的方法。

dict1

答案 1 :(得分:0)

因为运算符<TextField id="login-email" label="Email/MobileNo" required fullWidth type="email" className={classes.textField} inputRef={el => { this.input = el; }} or inputRef={el => this.email = el;} margin="normal" /> 仅可用于在函数调用中将字典解压缩为关键字参数。例如,您可以将两个字典与**作为参数的函数dict()合并:

**kwargs

在元组解包中不能使用双星,就像单星一样。