当前位置: 首页 > 知识库问答 >
问题:

如何追加和项到列表中最后一个追加的项

逑兴安
2023-03-14

我有一个for循环,它遍历CSV中的每一行,我创建了一个包含列表的字典,但是列表被重写了,因为字典键被重复了几次。我如何总结或追加到列表中的第二(1)位置相同的键的下一个值下一个循环迭代?

因为使用append时,如果再次找到现有键,则会覆盖该值,因此该键的值会被一次又一次地覆盖。

with open('RawPolicy.csv', newline='') as rulemaker:
    rmatcher = csv.reader(rulemaker, delimiter=" ")

    for i in rmatcher:
        dic[i[2]]=[i[0]],[i[1]]

CSV中的字段包括:

Sgrupo3 CSGrupo3 LLLLLLLL
Sgrupo4 CSGrupo4 LLLLLLLL

输出应该是这样的:

{'LLLLLLLL': (['Sgrupo3', 'Sgrupo4'], ['CSGrupo3', 'CSGrupo4'])}

共有1个答案

有玄天
2023-03-14

您可以使用dict.setdefault使用2个子列表的元组初始化每个新键,然后通过压缩子列表和当前记录中的值来迭代它们,并将它们附加到每个列表中值:

for *values, key in rmatcher:
    for lst, value in zip(dic.setdefault(key, ([], [])), values):
        lst.append(value)

演示:https://repl.it/@blhsing/GraffulMountainousProperty

如果值和键不一定在前三列中,则可以直接指定索引。以下代码假定键位于索引6,值位于索引0和1:

for row in rmatcher:
    for lst, value in zip(dic.setdefault(row[6], ([], [])), row[:2]):
        lst.append(value)
 类似资料:
  • 问题内容: 我正在编写一个包含10个存储桶列表的简单哈希表。使用内置函数计算索引,然后对表大小取模。但是,当我尝试将对象附加到该索引的存储桶列表时,它会附加到每个存储桶列表。我尝试用不同的方式定义add_HT,但我一直得到相同的结果。我究竟做错了什么? 问题答案: 使指向 同一列表 的指针数量增加。这里不是问题。您需要定义为。

  • 问题内容: 我有一个清单: 列表的长度不确定,因此我尝试将对象追加到list1的末尾,如下所示: 但是我的输出始终显示此错误:AttributeError:’NoneType’对象没有属性’append’ 这是因为list1从一个空列表开始吗?如何解决此错误? 问题答案: 实际 更改 列表。同样,它需要一个 item ,而不是一个列表。因此,您所需要做的就是 (请注意,在这种情况下,您可以使用。)

  • 我正在尝试创建一个新的创建列表,其中通过for循环的每次迭代将一个新项附加到列表中。到目前为止,代码如下所示: 当我这样做时,会创建一个列表,但列表中的每个项目都是相同的。我希望每个项目都使用在上一个for循环中创建的date_字符串变量,该变量在每次迭代中都应该更改。这是它创建的列表的一个示例: 我尝试过改变循环的缩进,但这并没有解决问题。 我也试图提高使用Numpy数组的效率,但这个问题的答案

  • 问题内容: 在Python Shell中,我输入: 并得到 但是当我尝试: 并得到 有人知道发生了什么吗?我该如何解决/解决它? 问题答案: 是一种修改现有列表的方法。它不返回新列表,而是返回,就像大多数修改列表的方法一样。简单地做,您的列表将添加元素。

  • 问题内容: 无法附加到吗? 我正在尝试附加到对象列表。摘录之后的片段是每当作业完成时都会调用的函数。 但是,当我尝试读取它时,我只会得到文件中的第一个。然后我得到java.io.StreamCorruptedException。 要阅读我正在使用 我不知道会出现多少个对象,因此我在阅读时没有例外。根据Google的说法,这是不可能的。我想知道是否有人知道吗? 问题答案: 这是窍门:子类Object

  • 我试图从包含列表的json中提取一个字段,然后将该列表附加到数据帧中,但遇到了一些不同的错误。 我想我可以将其写入csv,然后用Pandas读取csv,但我尽量避免写入任何文件。我知道我也可以使用StringIO生成csv,但这存在空字节问题。替换这些将是(我认为)另一个逐行的步骤,这将进一步延长脚本完成所需的时间。。。我正在对一个返回成千上万个结果的查询运行此操作,因此保持它的快速和简单是一个优