在创建新键时循环字典

伊莱·图拉斯基

我有两个字典,一个包含城市坐标,另一个包含时间片。我的数据来自我在此处打开的 netcdf 文件。

data=xr.open_dataset('E:/Riskpulse_HD/Jon climate study/adaptor.mars.internal-1583855532.1432714-8122-5-ace27afd-90c0-4a7d-b9ca-f3d5528c5ea1.nc')

然后我设置我的变量。

lat = data['latitude'][:]
lon = data['longitude'][:]
temp = data['t2m'][:,0,:,:]-273

cities = {
    "Shangai": {"coords": [31.25, 121.5]},
    "Singapore": {"coords": [1.25, 103.75]},
    "Shenzhen": {"coords": [22.5, 114]},...}

decades = {
    "1990s": {"start": dt.datetime(1990,1,1), "end": dt.datetime(1999,12,31)},
    "2000s": {"start": dt.datetime(2000,1,1), "end": dt.datetime(2009,12,31)},
    "2010s": {"start": dt.datetime(2010,1,1), "end": dt.datetime(2019,12,31)}}

我想遍历这些并创建新的键,这样我就可以有类似cities["Shangai"]["1990s"]. 这是我用来尝试的代码:

for city, location in cities.items():
    data = temp.sel(latitude=location['coords'][0], longitude=location['coords'][0])
    for decade, dates in decades.items():
        city[decade] += data.sel(time=(slice(dates['start'], dates['end'])))

但是,它返回此错误,我不确定它想告诉我什么。

错误 :

*-->4 city[decade] += data.sel(time=(slice(dates['start'], dates['end'])))*

*TypeError: string indices must be integers*

编辑

我最终能够解决这个问题。

for city, location in cities.items():
    data = temp.sel(latitude=location['coords'][0], longitude=location['coords'][0])
    for decade, dates in decades.items():
        cities[city][decade] = data.sel(time=(slice(dates['start'], dates['end'])))
阮廷

您正在将 a 设置value为 a dict[key]这是通过dict[key] = value(你写的+=)完成的。

我不知道你是做什么的temp.seldata.sel但在你的情况下,你可以写:

for city, citydata in cities.items():
  for decade, dates in decades.items():
    cities[city][decade] = dates

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用“for循环”从字典的键创建新命名的变量

在循环中创建时,字典键被覆盖

如何在不创建新键的情况下访问 for 循环内的现有字典键?

从键创建字典时不对键排序

创建动态字典并在循环中为其分配新键 (Python)

在 Python 中创建新的字典键时,使用 `update` 而不是简单的 = 创建它是否有好处?

Python从字典键创建新列

使用字典键创建新列

使用新键从现有字典创建新字典

创建字典,循环时如何更新

使用带有循环的元组键创建字典

创建字典并使用循环为每个键分配多个值

创建新的pandas列时,如果键不在字典中,则在列表理解的else条件下插入NaN

根据字典的键创建一个新列?

当键嵌入列表时从列表创建字典

如何在python循环中向字典添加新的键和值,字典是类对象的属性

如何根据字典键从嵌套字典创建多个新的数据框列

迭代两个字典并创建一个新的字典,其中的键不匹配

如何使用更新的键和值从旧的嵌套字典创建新的嵌套字典?

Python循环创建字典

通过 for 循环 (?) 创建字典

从 For 循环创建嵌套字典

循环创建嵌套字典

创建一个新键并在嵌套字典中分配现有键的值

LINQ在选择作为字典的属性时创建新的匿名类型

循环浏览字典,参考键

比较基于键的字典并使用缺失的键创建一个新的字典,python3 中的值为 0

创建新表时不能添加外键约束

Python在空格键按下时创建新行