【问题标题】:Accessing same key:value pair in list of dictionaries in python访问相同的键:python中字典列表中的值对
【发布时间】:2019-06-15 02:45:25
【问题描述】:

在 python 中,我有一个包含大约 12 个字典的城市列表,每个字典在每个字典的完全相同位置包含 4 个键:值对。如何访问或打印每个字典中相同的值对?

【问题讨论】:

  • 请发布您的代码。没有它,任何人都很难提供帮助。
  • 你没有表现出解决这个问题的努力,也没有数据可供我们使用。
  • 欢迎来到 StackOverflow!澄清一下,您是说所有 12 个字典中都有相同的 4 个键吗?
  • 如果没有看到您的原始代码,我们将不知道如何对您现有的代码库进行更改。请发帖a minimal example of what needs to change,并详细说明需要修改的地方。

标签: python list dictionary


【解决方案1】:

如果您知道键的名称(在字典中的键值巴黎),您可以在列表中循环并直接打印。例如: 下面如果我们知道有键的 2 个字典的列表:1,2,3 我们直接打印值:

city=[
    {1:'bhopal', 2:'newyork', 3:'italy'},
    {1:'london', 2:'india', 3:'europe'}
]

for i in city:
    print(i[1]), i[2] , i[3])

for i in city:
    for key,value in i.items():
         print (key,value)

我希望这行得通。

【讨论】:

    【解决方案2】:

    由于字典的键始终相同,因此您可以遍历列表的所有元素并打印与您选择的特定键相对应的值。

    cities = [
        {'population': 1000,
        'name': 'Oslo',
        'size': 12513200,
        'temperature': 2},
        {'population': 20000,
        'name': 'Chongqing',
        'size': 412400000,
        'temperature': 15},
        {'population': 1000,
        'name': 'Shanghai',
        'size': 5512332,
        'temperature': 33}
    ]
    
    def print_specific(d, k):
        print(*[i[k] for i in d], sep='\n')
    
    print_specific(cities, 'name') 
    

    输出

    Oslo
    Chongqing
    Shanghai
    

    【讨论】:

    • 如何将它们存储在单独的列表中?
    • return [i[k] for i in d] 而不是打印名称
    【解决方案3】:

    我用国家写了一个例子,看到我不知道你的代码(ps所有数据都是假的):

    dic={'uk':{'capital':'london', 'dimension':235423, “人口”:31321},“法国”:{“资本”:“巴黎”,“维度”:43523, “人口”:542342},“意大利”:{“资本”:“罗马”,“维度”:935123, “人口”:4323342}}

    如果你只想占领主要国家,那就这样做:

    dic.keys()
    

    这将是五个你

    ['france', 'italy, 'uk']
    

    如果您想动态了解一个国家的所有信息,您可以这样做:

    k=dic.keys()
    for i in k:
        print dic[i]
    

    输出:

    {'population': 4323342, 'dimension': 935123, 'capital': 'rome'} 
    {'population': 31321, 'dimension': 235423, 'capital': 'london'} 
    {'population': 542342, 'dimension': 43523, 'capital': 'paris'}
    

    如果您想要一些特定信息,只需在打印件上添加特定节点:

    k=dic.keys()
    for i in k:
        print dic[i]['capital']
    

    输出:

    rome
    london
    paris
    

    如果你有一个字典列表,你可以迭代它并获取所需的值:

    l=[{'人口':4323342,'维度':935123,'资本':'罗马'}, {“人口”:31321,“维度”:235423,“资本”:“伦敦”}, {'人口':542342,'维度':43523,'资本':'巴黎'}]

    for i in l:
        print i['capital']
    

    输出:

    rome 
    london 
    paris
    

    【讨论】:

      【解决方案4】:

      为什么不为此创建一个自定义类?

      class CustomMap(object):
          def __init__(self, *maps):
              self.maps = maps
      
          def __getitem__(self, key):
              found = []
              for mapping in self.maps:
                  if mapping.get(key):
                      found.append(mapping.get(key))
                  else:
                      continue
              return found
      
          def get(self, key):
              return self.__getitem__(key)
      
      d = {'a': 2, 'b': 3}
      e = {'a': 5, 'f': 1}
      
      c = CustomMap(d, e)
      
      c['a']
      [2, 5]
      
      c.get('a')
      [2, 5]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-25
        • 1970-01-01
        • 2019-11-04
        • 2022-09-28
        • 1970-01-01
        • 2021-04-17
        • 2017-03-11
        • 1970-01-01
        相关资源
        最近更新 更多