Python 3.x 在python中,从列表中选择一个特定字段

Python 3.x 在python中,从列表中选择一个特定字段,python-3.x,list,Python 3.x,List,我有一个python列表。我只想提取字段countryRegion。我该怎么做呢。代码lst['countryRegion']会导致错误:TypeError:列表索引必须是整数或片,而不是str 请帮帮我 [{'__type': 'Location:http://schemas.microsoft.com/search/local/ws/rest/v1', 'address': {'adminDistrict': 'Tamil Nadu', 'adminDistrict2': 'Ch

我有一个python列表。我只想提取字段countryRegion。我该怎么做呢。代码
lst['countryRegion']
会导致错误:TypeError:列表索引必须是整数或片,而不是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'}}]
根据你的意见

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
    不是字典的键,而是在字典中key
    address
根据您的输入

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
    不是字典的键,而是在字典中key
    address

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

    我不知道您是如何获得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"])
    

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

    我不知道您是如何获得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"])
    

    它正在产生该错误,因为该列表包含一个类型为dictionary的元素

    因此,要访问所需的值,只需使用命令

    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']
    

    它正在产生该错误,因为该列表包含一个类型为dictionary的元素

    因此,要访问所需的值,只需使用命令

    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']