如何在python中访问deep JSON属性

2024-04-25 08:14:51 发布

您现在位置:Python中文网/ 问答频道 /正文

这个PHP代码可以工作(下面是json):

$usaData = json_decode(stripslashes(file_get_contents('usaJson.txt')),true);
foreach($usaData['USA']['States'] as $state){
    foreach($state['Cities'] as $city){
            $zipCode = $city['zipcode'];
        }
    }
}

我试图在python中做同样的事情,但是它给了我<type 'exceptions.TypeError'>: string indices must be integers

^{pr2}$

我的数据结构如下:

{
  "USA":{
    "States":{
      "AL":{
        "Cities":[
          {
            "city":"auburn",
            "zipcode":"36830"
          },
          {
            "city":"birmingham",
            "zipcode":"35201"
          }
        ]
      },
      "AK":{
        "Cities":[
          {
            "city":"anchorage",
            "zipcode":"99501"
          },
          {
            "city":"fairbanks",
            "zipcode":"99701"
          }
        ]
      }
    }
  }
}

那么我如何在python中访问zipcodes呢?在


Tags: 代码jsoncityasfilephpstatezipcode
2条回答
for state in usaData.USA.States:

或者可能是,取决于结构:

^{pr2}$

编辑:不漂亮,可以使用清理,但这应该有效:

for state in usaData['USA']['States'].keys():
    for cities in usaData['USA']['States'][state]['Cities']:
        print cities['zipcode']

你的问题是,迭代字典得到的是键,而不是字典中的值。所以你需要的是:

for state_name in usaData['USA']['States']
  for city in usaData['USA']['States'][state_name]['Cities']
    print city['zipcode']

非常丑陋

更好的版本是在字典中使用items函数,如下所示:

^{pr2}$

相关问题 更多 >