Python:向dict列表或关联数组添加元素

Python:向dict列表或关联数组添加元素,python,list,associative-array,Python,List,Associative Array,我试图将元素添加到dict列表(关联数组),但每次它循环时,数组都会覆盖上一个元素。因此,我最终得到一个大小为1的数组,最后读取一个元素。我确认钥匙每次都在换 array=[] for line in open(file): result=prog.match(line) array={result.group(1) : result.group(2)} 任何帮助都会很好,谢谢=]您的解决方案不正确;正确的版本是: array={} for line in open(file):

我试图将元素添加到dict列表(关联数组),但每次它循环时,数组都会覆盖上一个元素。因此,我最终得到一个大小为1的数组,最后读取一个元素。我确认钥匙每次都在换

array=[]
for line in open(file):
  result=prog.match(line)
  array={result.group(1) : result.group(2)}

任何帮助都会很好,谢谢=]

您的解决方案不正确;正确的版本是:

array={}
for line in open(file):
  result=prog.match(line)
  array[result.group(1)] = result.group(2)
与您的版本有关的问题:

  • 关联数组是dict和空dict={}
  • 数组是列表,空列表=[]
  • 每次都将数组指向新字典
  • 这就像说:

    array={result.group(1) : result.group(2)}
    array={'x':1}
    array={'y':1}
    array={'z':1}
    ....
    
    数组仍然是一个元素dict

    array=[]
    for line in open(file):
      result=prog.match(line)
      array.append({result.group(1) : result.group(2)})
    
    或:


    也许更像蟒蛇:

    with open(filename, 'r') as f:
        array = dict(prog.match(line).groups() for line in f)
    
    或者,如果您的
    prog
    与更多组匹配:

    with open(filename, 'r') as f:
        array = dict(prog.match(line).groups()[:2] for line in f)
    

    第一个不是OP想要的。他想要一本字典(关联数组)。根据:我应该能够按照我写的方式添加元素。我真的不明白为什么我不能按照网站上指定的方式来做。编辑:哦,我明白我做错了什么。愚蠢的我谢谢again@nubme-不,您的方式在循环的每个迭代中初始化
    数组
    字典。请参阅
    数组=…
    初始化。@nume:请参阅我的答案的最后一部分。这就像说k=1,然后k=2,然后k=3。K是3对。而不是1,2,3。在循环中,每次都将数组指向新的dict。按照这种方式,实例化一个新的dict对象并替换上一个对象。创建对象时,{foo:bar}语法是正确的。当您想向dict添加元素时,必须使用dict[foo]=bar。
    with open(filename, 'r') as f:
        array = dict(prog.match(line).groups()[:2] for line in f)