我有一个字典形式的json输出。在迭代它时,我没有得到值。我在这里缺少什么?
下面是dict
类型的示例 json 输出。您可以看到有两个级别。因此,一旦我到达'level2'
,我就需要迭代下一个级别,该级别未在此处显示,因为我已将数据修剪为一个项目。
data = {u'level1':
{u'level2': [{u'Data':
{u'id': u'220',
u'byte': u'13',
u'time': u'1444',
u'ch': u'38'}}]}}
我尝试如下:
d=[]
for x in data['level2']:
d.append(x['Data']['id'])
不知道为什么我得到空白输出。
尝试这样的递归函数:
def walkdict(data):
for k, v in data.items():
if isinstance(v, dict):
walkdict(v)
else:
print("{0} : {1}".format(k, v))
目前还不清楚你想要"迭代"什么,特别是因为你修剪了数据并且没有真正指定你想要的输出。
因此,以下是基于添加更多示例数据的猜测:
data = {u'level1':
{u'level2': [{u'Data':
{u'id': u'220',
u'byte': u'13',
u'time': u'1444',
u'ch': u'38'}},
{u'Data':
{u'id': u'440',
u'byte': u'26',
u'time': u'2888',
u'ch': u'76'}}]}}
ids = []
for item in data['level1']['level2']:
ids.append(item['Data']['id'])
print(ids) # -> [u'220', u'440']
通过将for
循环置于所谓的列表 理解中,您可以更简洁地获得相同的结果(但会损失一些可读性(:
ids = [item['Data']['id'] for item in data['level1']['level2']]
level2 的值是一个列表。因此,您必须像这样遍历:
data={u'level1': {u'level2': [{u'Data': {u'id': u'220', u'byte': u'13', u'time': u'1444', u'ch': u'38'}}]}}
d = []
for x in data['level1']['level2']:
d.append(x['Data']['id'])
>>> d
['220']
for k, v in data.items():
p = v.get('level2')
if p:
print p['Data']['id']
或。