打印嵌套字典

时间:2021-04-20 21:15:19

标签: python python-2.7

我要处理的 JSON 文件中有多个字典。

with pm.Model() as model:
# global model parameters
home = pm.Flat("home")
sd_att = pm.HalfStudentT("sd_att", nu=3, sigma=2.5)
sd_def = pm.HalfStudentT("sd_def", nu=3, sigma=2.5)
intercept = pm.Flat("intercept")

# team-specific model parameters
atts_star = pm.Normal("atts_star", mu=0, sigma=sd_att, shape=num_teams)
defs_star = pm.Normal("defs_star", mu=0, sigma=sd_def, shape=num_teams)

atts = pm.Deterministic("atts", atts_star - tt.mean(atts_star))
defs = pm.Deterministic("defs", defs_star - tt.mean(defs_star))
home_theta = tt.exp(intercept + home + atts[home_team] + defs[away_team])
away_theta = tt.exp(intercept + atts[away_team] + defs[home_team])

# likelihood of observed data
home_points = pm.Poisson("home_points", mu=home_theta, observed=observed_home_goals)
away_points = pm.Poisson("away_points", mu=away_theta, observed=observed_away_goals)

我试过了:

data = [
    {
        'field1' : 'Name',
        'value': {
            'self': 'www.google.com',
            'id': '1234',
            'value': 'myname'
        }
    },
    {
        'field1' : 'Name1',
        'value': {
            'self': 'www.google.com',
            'id': '2345',
            'value': 'myname1'
        }
    },
    {
        'field1' : 'Name2',
        'value': 'hostname'
    }
]

我得到的输出为:

for info in data:
  if 'value' in info:
     if isinstance(info, dict)
       print(info['value']['value'])

我正在寻找以下输出:

myname
myname1

1 个答案:

答案 0 :(得分:0)

你可以这样做:

data = [
    {
        'field1' : 'Name',
        'value': {
            'self': 'www.google.com',
            'id': '1234',
            'value': 'myname'
        }
    },
    {
        'field1' : 'Name1',
        'value': {
            'self': 'www.google.com',
            'id': '2345',
            'value': 'myname1'
        }
    },
    {
        'field1' : 'Name2',
        'value': 'hostname'
    }
]


def deepest_string_value(d):
    value = d.get('value')   
    if isinstance(value, dict):
        return deepest_string_value(value)
    elif isinstance(value, str):
        return value
    

for row in data:
    print(deepest_string_value(row))

输出:

myname
myname1
hostname