我有两个字典,一个包含城市坐标,另一个包含时间片。我的数据来自我在此处打开的 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.sel
,data.sel
但在你的情况下,你可以写:
for city, citydata in cities.items():
for decade, dates in decades.items():
cities[city][decade] = dates
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句