【问题标题】:Dictionary and List字典和列表
【发布时间】:2016-01-31 14:06:43
【问题描述】:

在读取文件时,我将给定的数据转换为键和值的格式。 (价值只是一个人的年龄)

例如,如果文件有数据:

20120101,56years
20120102,45years
20120103,67years
20120104,38years

.. 以此类推,直到20120131,21years

我创建了一个字典并将日期作为键(在这种情况下,假设行 1,所以键将是 20120101)并且我将值设置为 56years

当我打印出来时,我会为每个日期获得一个单独的字典。 例如:

{'20120101': ['56years']}
{'20120102': ['45years']}
{'20120103': ['67years']}
{'20120104': ['38years']}

因为我看到每个字典都有相同的起始值,比如201201, 如何制作一个字典,其中包含一个键 201201 以及列表中附加的所有值?

例子:

{'201201': ['56years', '45years', '67years', '38years'...]}

【问题讨论】:

    标签: python list csv dictionary indexing


    【解决方案1】:

    您可以使用collections.defaultdict

    from collections import defaultdict
    d = defaultdict(list)
    

    现在,当您获得密钥 k 和价值 v

    d[k].append(v)
    

    添加第一个键值对后,您的字典可能如下所示:

    {'201201' : [56years]}
    

    读取键为“201201”的键值对并将值添加到d 后,您的字典将如下所示:

    {'201201' : [56years,45years]}
    

    【讨论】:

      【解决方案2】:

      可能是这样的?(首先你需要像例子一样把所有的 dicts 放到一个列表中):

      d = {}
      
      a = [
          {'20120101': ['56years']},
          {'20120102': ['45years']},
          {'20120103': ['67years']},
          {'20120104': ['38years']},
          {'20120201': ['31years']},
          {'20120202': ['32years']},
          {'20120203': ['12years']}]
      
      for i in a:
          for j in i:
              try:
                  d[j[:6]].append(*i[j])
              except KeyError:
                  d[j[:6]] = i[j]
      
      print(d)
      

      输出:

      {'201201': ['56years', '45years', '67years', '38years'],              
       '201202': ['31years', '32years', '12years']}  
      

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 2021-01-23
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 2023-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多