Python 我们如何使用字符串api输出创建字典,如下所示:

Python 我们如何使用字符串api输出创建字典,如下所示:,python,dictionary,python-2.6,Python,Dictionary,Python 2.6,我们如何使用字符串api输出创建字典,如下所示: API输出: { "id":"group_cluster" ,"Fields":{ "SIZE":0 ,"REBALANCE":"AUTO" ,"REPLICAS":"1" ,"MODEL":"PARTICIPANT" ,"MODEL_FACTORY_NAME":"group_cluster" } ,"Fields":{ } ,"mapping":{ "group_0":{

我们如何使用字符串api输出创建字典,如下所示:

API输出:

{
  "id":"group_cluster"
  ,"Fields":{
    "SIZE":0
    ,"REBALANCE":"AUTO"
    ,"REPLICAS":"1"
    ,"MODEL":"PARTICIPANT"
    ,"MODEL_FACTORY_NAME":"group_cluster"
  }
  ,"Fields":{
  }
  ,"mapping":{
    "group_0":{
      "station08.example.com_98559":"PARTICIPANT"
    }
    ,"group_1":{
      "station19.example.com_98559":"PARTICIPANT"
    }
    ,"group_2":{
      "station31.example.com_98559":"PARTICIPANT"
    }
    ,"group_3":{
      "station44.example.com_98559":"PARTICIPANT"
    }
}
想用上面的字符串编一本字典


我尝试使用json模块,结果是:

In: import json
In: d=json.loads(data)
In: d
Out:
{u'id': u'group_cluster',
 u'Fields': {},
 u'mapping': {u'group_0': {u'station08.example.com_98559': u'PARTICIPANT'},
  u'group_1': {u'station19.example.com_98559': u'PARTICIPANT'},
  u'group_2': {u'station31.example.com_98559': u'PARTICIPANT'},
  u'group_3': {u'station44.example.com_98559': u'PARTICIPANT'},
  u'group_4': {u'station73.example.com_98559': u'PARTICIPANT'},
  u'group_5': {u'station88.example.com_98559': u'PARTICIPANT'},
  u'group_6': {u'station74.example.com_98559': u'PARTICIPANT'},
  u'group_7': {u'station77.example.com_98559': u'PARTICIPANT'}},
 u'Fields': {u'SIZE': u'0',
  u'ENABLED': u'true',
  u'STATE_MODE': u'AUTO',
  u'REBALANCE': u'AUTO',
  u'REPLICAS': u'1',
  u'MODEL': u'PARTICIPANT',
  u'MODEL_FACTORY_NAME': u'group_cluster'}}

In : for i,k in d.items():
    for e,f in k.items():
        for j in f.iteritems():
            print j[0],e
   .....:
station31.example.com_98559 group_2
station44.example.com_98559 group_3
station08.example.com_98559 group_0
station19.example.com_98559 group_1
station74.example.com_98559 group_6
station77.example.com_98559 group_7
station73.example.com_98559 group_4
station88.example.com_98559 group_5
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-258-418baa8a7a16> in <module>()
      1 for i,k in d.items():
      2     for e,f in k.items():
----> 3         for j in f.iteritems():
      4             print j[0],e
      5

AttributeError: 'unicode' object has no attribute 'iteritems'
In:import-json
In:d=json.load(数据)
In:d
输出:
{u'id':u'group_cluster',
u'Fields':{},
u'mapping':{u'group_0':{u'station08.example.com_98559':u'PARTICIPANT'},
u'group_1':{u'station19.example.com_98559':u'PARTICIPANT'},
u'group_2':{u'station31.example.com_98559':u'PARTICIPANT'},
u'group_3':{u'station44.example.com_98559':u'PARTICIPANT'},
u'group_4':{u'station73.example.com_98559':u'PARTICIPANT'},
u'group_5':{u'station88.example.com_98559':u'PARTICIPANT'},
u'group_6':{u'station74.example.com_98559':u'PARTICIPANT'},
u'group_7':{u'station77.example.com_98559':u'PARTICIPANT'},
u'Fields':{u'SIZE':u'0',
u'ENABLED':u'true',
u'STATE_MODE':u'AUTO',
u‘再平衡’:u‘自动’,
u'1':u'1',
u'MODEL':u'PARTICIPANT',
u'MODEL_FACTORY_NAME':u'group_cluster'}
In:对于i,k In d.items():
对于k.项()中的e、f:
对于f.iteritems()中的j:
打印j[0],e
.....:
station31.example.com_98559第2组
station44.example.com_98559第3组
station08.example.com_98559组_0
station19.example.com_98559组_1
station74.example.com_98559组_6
station77.example.com_98559第7组
station73.example.com_98559第4组
station88.example.com_98559第5组
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在()
1表示i,k in d.项():
2对于e,f在k中。项目()
---->对于f.iteritems()中的j,为3:
4打印j[0],e
5.
AttributeError:“unicode”对象没有属性“iteritems”
找到了解决方案:

for i,k in d.items():
  if type(k)==dict:
    for e,f in k.items():
      if type(f)==dict:
        for j in f.iteritems():
          print j[0],e

你是说你有JSON数据?这就是
json
库的用途。或者您想将
mapping
中的键与嵌套键组合作为值吗?你自己试过什么了吗?
for i,k in d.items():
  if type(k)==dict:
    for e,f in k.items():
      if type(f)==dict:
        for j in f.iteritems():
          print j[0],e