Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
是否可以在移动中创建和更新python字典_Python_Python 2.7 - Fatal编程技术网

是否可以在移动中创建和更新python字典

是否可以在移动中创建和更新python字典,python,python-2.7,Python,Python 2.7,我必须在for循环中创建一个嵌套字典。我已将父词典数据初始化为空。现在在循环中,我得到了要添加到父字典的键。每把钥匙都是一本字典 data = {} for condition Get x, y # x is the new key if x not in data: data[x] ={} data[x].update({y:1}) # or data[x][y] = 1 但我想在一行中完成上面的部分,如下所示 data = {

我必须在for循环中创建一个嵌套字典。我已将父词典
数据
初始化为空。现在在循环中,我得到了要添加到父字典的键。每把钥匙都是一本字典

data = {}
for condition
    Get x, y     # x is the new key 
    if x not in data:
        data[x] ={}
        data[x].update({y:1})    # or data[x][y] = 1
但我想在一行中完成上面的部分,如下所示

data = {}
for condition
    Get x, y  # x is the new key 
    if x not in data:
        data.update({x:{}}.update({y:1}))
这里我得到了
TypeError:“NoneType”对象不可编辑
。我猜这是由于内部更新(即,
update({y:1}
)首先执行,并尝试更新尚未出现的
x
,因此
NoneType


有没有其他方法可以在一行中实现这一点?或者我有没有唯一的方法先创建一个空字典,然后按照第一个代码段所示更新它?

也可以实现
data[x]={y:1}
data.update({x:{y:1})
如@karthikr所述

您是否正在尝试自动插入嵌套字典?如果是,您可以尝试使用:


这将打印
1

您可以提供一些实际数据作为示例吗?或者使用普通的
dict
数据。setdefault(x,{})[y]=1
。通常效率低于
defaultdict(dict)
,因为它需要创建一个空的
dict
作为参数传递,即使默认值未使用(而且因为方法调用比原始的
dict
getitem操作更昂贵),但是当您需要执行混合操作时,最好了解
setdefault
,其中一些操作在缺少时会添加默认值,而另一些操作会像正常情况一样发出
KeyError
from collections import defaultdict

data = defaultdict(dict)
for i in range(10):
    x = "..."
    y = "..."
    data[x][y] = 1

print data["..."]["..."]