Python-将txt信息保存到包含列表的字典中

时间:2017-12-06 02:59:44

标签: python

我是python的新手,我知道你可以用以下格式将信息保存到字典中:

dictionary ={'Albany' : [ 201, 16.9, etc] }

但我试图从文本文件中获取信息以进入该格式。有谁知道我会怎么做?对不起,如果我含糊不清,我可以尝试在必要时为任何人澄清。 以下是文本文件的一部分:

36 1 39857 35436 44278 13.7 12.2 15.2 9271 7566 10976 16.1 13.1 19.1 6123 4832 7414 14.5 11.4 17.6 55778 53673 57883
奥尔巴尼县纽约est13_NY.txt 05NOV2014

36 3 7296 5941 8651 16.7 13.6 19.8 2526 2043 3009 25.6 20.7 30.5 1707 1331 2083 23.5 18.3 28.7 41849 39467 44231
Allegany County NY est13_NY.txt 05NOV2014

前两行是文本文件中的一行,我要做的是比较顶行的某些统计数据(儿童贫困数据),让我的程序根据其中一个来确定哪个县的贫困百分比最高基于txt文件中其他数据的数据和其他内容。

对于每个县,这是我需要的数据: 我们关心每个县的数据是: 位置变量

  • 50- 57 0-17岁贫困人口的估计
  • 77- 80贫困人口中0-17岁人口的估计百分比
  • 134-139家庭收入中位数估计
  • 194-238州或县名
  • 县名包括'县&#39 ;.要摆脱它使用 在删除尾随空格后,替换('县''')。

我也不能使用任何模块。 到目前为止,我打开了txt文件然后执行for循环读取文件中的每一行并将其放入字典中,但我不知道如何将其放入我上面说的格式中。

1 个答案:

答案 0 :(得分:0)

您没有提供太多信息,所以这里只是一个演示代码帮助,让您知道如何实现这一目标:

一般来说,人们会使用collections.defaultdict来表达这种情况,但是既然你说你不想要导入任何模块,那么这里就是针对这类问题的算法模式:

让我们先了解实际问题:

  

示例提示:

对于这些类型的列表问题,有一种模式:

假设你有一个清单:

a=[(2006,1),(2007,4),(2008,9),(2006,5)]

并且你希望将它转换为dict作为元组的第一个元素作为元组的键和第二个元素。类似的东西:

{2008: [9], 2006: [5], 2007: [4]}

但是有一个问题,你也想要那些具有不同值但键相同的键,如(2006,1)和(2006,5)键是相同的,但值是不同的。你希望那些值只附加一个键,所以预期输出:

{2008: [9], 2006: [1, 5], 2007: [4]}

对于这类问题,我们会这样做:

首先创建一个新的字典然后我们遵循这种模式:

if item[0] not in new_dict:
    new_dict[item[0]]=[item[1]]
else:
    new_dict[item[0]].append(item[1])

因此我们首先检查密钥是否在新的dict中,如果已经存在,则将duplicate key的值添加到其值中:

完整代码:

a=[(2006,1),(2007,4),(2008,9),(2006,5)]

new_dict={}

for item in a:
    if item[0] not in new_dict:
        new_dict[item[0]]=[item[1]]
    else:
        new_dict[item[0]].append(item[1])

print(new_dict)