我有如下所示格式的数据,我认为这是一个带有嵌套字典的列表:
data = [{'slipstream_internal/slipstream_hq/27/CLG-MAXFLOW': 580.0,
'slipstream_internal/slipstream_hq/29/CLG-MAXFLOW': 1400.0,
'slipstream_internal/slipstream_hq/30/CLG-MAXFLOW': 918.0,
'slipstream_internal/slipstream_hq/6/CLG-MAXFLOW': 760.0,
'slipstream_internal/slipstream_hq/10/CLG-MAXFLOW': 210.0,
'slipstream_internal/slipstream_hq/8/CLG-MAXFLOW': 880.0,
'slipstream_internal/slipstream_hq/9/CLG-MAXFLOW': 1040.0,
'slipstream_internal/slipstream_hq/11/CLG-MAXFLOW': 700.0,
'slipstream_internal/slipstream_hq/13/CLG-MAXFLOW': 1030.0,
'slipstream_internal/slipstream_hq/14/CLG-MAXFLOW': 1030.0,
'slipstream_internal/slipstream_hq/15/CLG-MAXFLOW': 500.0,
'slipstream_internal/slipstream_hq/16/CLG-MAXFLOW': 370.0,
'slipstream_internal/slipstream_hq/19/CLG-MAXFLOW': 970.0,
'slipstream_internal/slipstream_hq/20/CLG-MAXFLOW': 560.0,
'slipstream_internal/slipstream_hq/21/CLG-MAXFLOW': 1410.0,
'slipstream_internal/slipstream_hq/23/CLG-MAXFLOW': 390.0,
'slipstream_internal/slipstream_hq/24/CLG-MAXFLOW': 320.0,
'slipstream_internal/slipstream_hq/25/CLG-MAXFLOW': 1200.0,
'slipstream_internal/slipstream_hq/26/CLG-MAXFLOW': 815.0,
'slipstream_internal/slipstream_hq/31/CLG-MAXFLOW': 1214.0,
'slipstream_internal/slipstream_hq/34/CLG-MAXFLOW': 735.0,
'slipstream_internal/slipstream_hq/36/CLG-MAXFLOW': 3000.0,
'slipstream_internal/slipstream_hq/37/CLG-MAXFLOW': 275.0,
'slipstream_internal/slipstream_hq/38/CLG-MAXFLOW': 1690.0,
'slipstream_internal/slipstream_hq/39/CLG-MAXFLOW': 270.0}
, {}]
最后总有一个空字典可以丢弃。有人可以告诉我如何将此数据类型转换为一个字典,使其看起来像下面这样吗?
data = {'slipstream_internal/slipstream_hq/27/CLG-MAXFLOW': 580.0,
'slipstream_internal/slipstream_hq/29/CLG-MAXFLOW': 1400.0,
'slipstream_internal/slipstream_hq/30/CLG-MAXFLOW': 918.0,
'slipstream_internal/slipstream_hq/6/CLG-MAXFLOW': 760.0,
'slipstream_internal/slipstream_hq/10/CLG-MAXFLOW': 210.0,
'slipstream_internal/slipstream_hq/8/CLG-MAXFLOW': 880.0,
'slipstream_internal/slipstream_hq/9/CLG-MAXFLOW': 1040.0,
'slipstream_internal/slipstream_hq/11/CLG-MAXFLOW': 700.0,
'slipstream_internal/slipstream_hq/13/CLG-MAXFLOW': 1030.0,
'slipstream_internal/slipstream_hq/14/CLG-MAXFLOW': 1030.0,
'slipstream_internal/slipstream_hq/15/CLG-MAXFLOW': 500.0,
'slipstream_internal/slipstream_hq/16/CLG-MAXFLOW': 370.0,
'slipstream_internal/slipstream_hq/19/CLG-MAXFLOW': 970.0,
'slipstream_internal/slipstream_hq/20/CLG-MAXFLOW': 560.0,
'slipstream_internal/slipstream_hq/21/CLG-MAXFLOW': 1410.0,
'slipstream_internal/slipstream_hq/23/CLG-MAXFLOW': 390.0,
'slipstream_internal/slipstream_hq/24/CLG-MAXFLOW': 320.0,
'slipstream_internal/slipstream_hq/25/CLG-MAXFLOW': 1200.0,
'slipstream_internal/slipstream_hq/26/CLG-MAXFLOW': 815.0,
'slipstream_internal/slipstream_hq/31/CLG-MAXFLOW': 1214.0,
'slipstream_internal/slipstream_hq/34/CLG-MAXFLOW': 735.0,
'slipstream_internal/slipstream_hq/36/CLG-MAXFLOW': 3000.0,
'slipstream_internal/slipstream_hq/37/CLG-MAXFLOW': 275.0,
'slipstream_internal/slipstream_hq/38/CLG-MAXFLOW': 1690.0,
'slipstream_internal/slipstream_hq/39/CLG-MAXFLOW': 270.0}
我正在尝试遍历键和值,显然这失败了:
for key, value in data.items():
print(key, value)
失败:
AttributeError: 'list' object has no attribute 'items'
答案 0 :(得分:0)
如果您的数据是一个只有两个元素的列表,而最后一个是空字典,那么简单的解决方案:
my_dict = data[0]
可靠的解决方案:
my_dict = {}
# iterate over your data
for entry in data:
# iterate over keys in the dict
for key in entry:
my_dict[key] = entry[key]
答案 1 :(得分:0)
不依赖第一个索引,将列表中任意数量的字典拼合为一个字典:
flatten = {}
for n in data:
flatten.update(n)
在创建这个扁平化的字典后,你下面的代码就可以正常工作了:
for key, value in flatten.items():
print(key, value)
答案 2 :(得分:0)
正如@Ibrahim Berber 在评论中所说的,一个简单的解决方案就是采用 data = data[0]
。或者,您可以保留它,然后按照@Leonardo Stefan 的建议使用 data[0]
访问您想要的字典,这将是我的首选方法。
因此,您的代码可以简单地更改为:
for key, value in data[0].items():
print(key, value)