【问题标题】:Extraxt a specific field from a list in python从python中的列表中提取特定字段
【发布时间】:2020-09-15 20:35:46
【问题描述】:

我在 python 中有一个列表。我只想提取字段 countryRegion。我该怎么做。代码lst['countryRegion'] 产生错误:TypeError: list indices must be integers or slices, not str

请帮帮我

 [{'__type': 'Location:http://schemas.microsoft.com/search/local/ws/rest/v1',
  'address': {'adminDistrict': 'Tamil Nadu',
   'adminDistrict2': 'Chennai',
   'countryRegion': 'India',
   'formattedAddress': 'Chennai, Tamil Nadu',
   'locality': 'Chennai'},
  'bbox': [12.85071, 79.97689, 13.23403, 80.33292],
  'confidence': 'High',
  'entityType': 'PopulatedPlace',
  'geocodePoints': [{'calculationMethod': 'None',
    'coordinates': [13.07209, 80.20186],
    'type': 'Point',
    'usageTypes': ['Display']}],
  'matchCodes': ['Good'],
  'name': 'Chennai, Tamil Nadu',
  'point': {'coordinates': [13.07209, 80.20186], 'type': 'Point'}}]

【问题讨论】:

    标签: python-3.x list


    【解决方案1】:

    根据您的意见

    lst =  [{'__type': 'Location:http://schemas.microsoft.com/search/local/ws/rest/v1',
      'address': {'adminDistrict': 'Tamil Nadu',
       'adminDistrict2': 'Chennai',
       'countryRegion': 'India',
       'formattedAddress': 'Chennai, Tamil Nadu',
       'locality': 'Chennai'},
      'bbox': [12.85071, 79.97689, 13.23403, 80.33292],
      'confidence': 'High',
      'entityType': 'PopulatedPlace',
      'geocodePoints': [{'calculationMethod': 'None',
        'coordinates': [13.07209, 80.20186],
        'type': 'Point',
        'usageTypes': ['Display']}],
      'matchCodes': ['Good'],
      'name': 'Chennai, Tamil Nadu',
      'point': {'coordinates': [13.07209, 80.20186], 'type': 'Point'}}]
    

    你的数据来自

    lst[0]['address']['countryRegion']
    
    • 首先,TypeError 是由于 lst 是列表类型而不是字典类型
    • 其次,countryRegion 不是你字典的键,而是来自键 address 的字典值

    【讨论】:

      【解决方案2】:

      由于列表包含字典类型的单个元素,因此会产生该错误。

      所以要访问所需的值,您只需使用命令

      list_dic = [{'__type': 'Location:http://schemas.microsoft.com/search/local/ws/rest/v1',
      'address': {'adminDistrict': 'Tamil Nadu',
         'adminDistrict2': 'Chennai',
         'countryRegion': 'India',
         'formattedAddress': 'Chennai, Tamil Nadu',
         'locality': 'Chennai'},
        'bbox': [12.85071, 79.97689, 13.23403, 80.33292],
        'confidence': 'High',
        'entityType': 'PopulatedPlace',
        'geocodePoints': [{'calculationMethod': 'None',
          'coordinates': [13.07209, 80.20186],
          'type': 'Point',
          'usageTypes': ['Display']}],
        'matchCodes': ['Good'],
        'name': 'Chennai, Tamil Nadu',
        'point': {'coordinates': [13.07209, 80.20186], 'type': 'Point'}}]
        
         lst_dic[0]['address']['countryRegion']
      

      【讨论】:

        【解决方案3】:

        那是因为它是一个字典列表。

        我不知道您是如何获得 json 的,但这是我能够获得的:

        js=[{'__type': 'Location:http://schemas.microsoft.com/search/local/ws/rest/v1',
          'address': {'adminDistrict': 'Tamil Nadu',
           'adminDistrict2': 'Chennai',
           'countryRegion': 'India',
           'formattedAddress': 'Chennai, Tamil Nadu',
           'locality': 'Chennai'},
          'bbox': [12.85071, 79.97689, 13.23403, 80.33292],
          'confidence': 'High',
          'entityType': 'PopulatedPlace',
          'geocodePoints': [{'calculationMethod': 'None',
            'coordinates': [13.07209, 80.20186],
            'type': 'Point',
            'usageTypes': ['Display']}],
          'matchCodes': ['Good'],
          'name': 'Chennai, Tamil Nadu',
          'point': {'coordinates': [13.07209, 80.20186], 'type': 'Point'}}]
          
        for i in range(len(js)):
            print(js[i]["address"]["countryRegion"])
        

        【讨论】:

          猜你喜欢
          • 2018-08-30
          • 2017-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-06
          • 2012-06-01
          • 2022-01-05
          相关资源
          最近更新 更多