Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 遍历列表以添加值_Python_Python 2.7_Python 3.x - Fatal编程技术网

Python 遍历列表以添加值

Python 遍历列表以添加值,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我试图在Python中向列表中添加一个txt文件,然后在列表中迭代查找数字并将它们全部相加 示例文本: Alabama 4780 Alaska 710 Arizona 6392 Arkansas 2916 California 37254 Colorado 5029 ['Alabama', '4780', 'Alaska', '710', 'Arizona', '6392', 'Arkansas', '2916', 'California', '37254', 'Colorado', '502

我试图在Python中向列表中添加一个
txt
文件,然后在列表中迭代查找数字并将它们全部相加

示例文本:

Alabama 4780
Alaska 710
Arizona 6392
Arkansas 2916
California 37254
Colorado 5029
['Alabama', '4780', 'Alaska', '710', 'Arizona', '6392', 'Arkansas', '2916', 'California', '37254', 'Colorado', '5029']

total population: 57621
预期输出:

Alabama 4780
Alaska 710
Arizona 6392
Arkansas 2916
California 37254
Colorado 5029
['Alabama', '4780', 'Alaska', '710', 'Arizona', '6392', 'Arkansas', '2916', 'California', '37254', 'Colorado', '5029']

total population: 57621
我可以将它们添加到列表中,但我无法找到所有数字的总数。 理想情况下,我希望它都在一个函数中

def totalpoplst(filename):
    lst = []
    with open(filename) as f:
        for line in f:
            lst += line.strip().split(' ')
        return print(lst)
    totalpop()

def totalpop(filename):
    total_pop = 0
    for i in lst:
        if  i.isdigit():
            total_pop = total_pop + i.isdigit()
    return print(total_pop)

def main():
    filename = input("Please enter the file's name: ")
    totalpoplst(filename)

main()

您需要将作为字符串提供的填充转换为数字。要执行此操作,请将行更改为:

total_pop = total_pop + i.isdigit()
全文如下:

total_pop = total_pop + int(i)

对于键值数据结构,最好使用
dict
,而不是列表

>>> population = {}
>>> total = 0
>>> with open('list.txt', 'r') as handle:
...     for line in handle:
...         state, sep, pop = line.partition(' ')
...         population[state] = int(pop)
...         total += population[state]
... 
>>> total
57081

要使用的字典会更好

你的文件有两行新行吗?没有,只有一行新行,文本是state name,后面没有空格,然后是population numbers我知道它很长,但是这里有一个很棒的python教程:这里是:啊,这是一个键入错误快速问题,如果我想使用set()。如何将文本文件中的每一行添加到集合中?为什么要使用集合?集合不是关联数组。大多数人使用一组同质数据,例如一组键或一组值。集合类似于字典,只是不能将数据附加到每个元素。在您的示例中,可以为状态使用一个集合,但这样就无法将数据(人口)附加到每个状态。