+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在Python中,您如何初始化/重新初始化关联数组(字典)?

发布于2020-05-27 06:10     阅读(627)     评论(0)     点赞(4)     收藏(0)


在我正在编写的Python程序中,我将使用一个关联数组(字典),该数组将以年值作为键,并以12个每月观测值的列表作为值。例如,将数据读入字典后,我可能会得到一个看起来像这样的字典(3个键指向12个值的3个列表):

{ 1953:[34,39,29,12,16,14,35,42,44,31,22,29],
  1954:[30,31,32,11,19,22,31,41,34,37,25,22],
  1955:[35,36,37,15,19,25,30,45,38,39,21,26] }

每次将数据读入字典时,我可能会有不同数量的键/值对。我想在循环的每次迭代开始时从一个空的字典开始,该循环从文件中读取数据(为简单起见,假设它是一个由逗号分隔的13个值的列表,其中第一个是年份,然后是十二个每月的观察值)。我是Python的新手,我想学习在Python中执行此类操作的最佳实践。在Java中,我会这样做:

for (int i = 0; i < 3; i++)
{
    Map<String, List<String>> yearToObservationsMap= new HashMap<String, List<String>>();
    String line = bufferedReader.readLine();
    while (line != null)
    {
        line = bufferedReader.readLine();
        List<String> yearPlusObservations = line.split(",");
        String year = yearPlusObservations.remove(0); 
        yearToObservationsMap.put(year, yearPlusObservations);
    }

    // now I can work with the dictionary to process the data
}

我的用例是每次使用字典时都需要在词典中具有可变数量的条目,因此我想在每次加载之前都对其进行初始化(或为空?)。例如,在一次迭代中,我可能有5年的数据,在下次迭代中,有30年的数据,而在下次迭代中,有17年的数据。因此,在每次迭代中,我都想清除字典。但是我是否也想以一种给定形式的字典来声明字典,也就是说,将始终知道它的键是年份,而值始终是12个整数元素列表?

预先感谢您的帮助,以帮助您理解这一点。


解决方案


我会反过来回答你的问题。你问:

但是我是否也想以一种给定形式的字典来声明字典,也就是说,将始终知道它的键是年份,而值始终是12个整数元素列表?

这个问题的答案是否定的。Python是动态类型的,因此可以省去Java中必需的类型注释。此外,字典可以包含(不可变的)对象的异类集合作为键,将字符串与整数混合等等,并且可以包含字面上的任何对象作为值。

至于重新初始化字典,您每次都可以创建一个新字典。但是,还有.clear()一种方法可以清空字典。如果您由于某种原因不想每次都创建新字典,请使用.clear()

您可以在其他答案中看到有关如何执行此操作的详细信息,但我想我会更直接地解决您的实际问题。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/393975/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

4 0
收藏该文
已收藏

评论内容:(最多支持255个字符)