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

2024-10-03 02:41:42 发布

您现在位置: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.5 11.4 17.6 55778 53673 57883
奥尔巴尼县纽约东部13_NY.txt 2014年11月5日

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
纽约州阿勒格尼县est13_NY.txt 2014年11月5日

前两行是文本文件中的一行,我要做的是比较顶行(儿童贫困数据)中的某些统计数据,让我的程序根据其中一个数据段说明哪个县的贫困率最高,根据txt文件中的其他数据段说明其他事情

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

  • 50-57 0-17岁贫困人口估计数
  • 77-80%的0-17岁人口估计处于贫困状态
  • 134-139家庭收入中位数估计数
  • 194-238州或县名称
  • 县名称包括“县”。要摆脱它,请使用 删除尾随空白后替换('County','')

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


Tags: 文件数据txt名称信息dictionary格式etc
1条回答
网友
1楼 · 发布于 2024-10-03 02:41:42

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

一般来说,人们使用collections.defaultdict来解决这类问题,但既然您说您不想导入任何模块,那么下面是针对这类问题的算法模式:

让我们首先了解实际问题:

Example Hint :

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

因此,假设您有一个列表:

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

对于这类问题,我们采取如下措施:

首先创建一个新的dict,然后我们遵循以下模式:

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

因此,我们首先检查key是否在new 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)

相关问题 更多 >