python - 为什么列表不保存元素?

标签 python list dictionary

while(True):
    size,times = map(int,input().split())
    v=list(map(int,input().split()))
    store=dict()
    for i in range(size):
        store[v[i]]=list()
        store[v[i]].append(i+1)
        print(store)
    while(times>0):
        pos,num = map(int,input().split())

例如:

size=8(输入数组大小)times=4

pos=1(num在列表中的位置以1开始)num=3

{1: [1]}
{1: [1], 3: [2]}
{1: [1], 3: [2], 2: [3]}
{1: [1], 3: [2], 2: [4]}
{1: [1], 3: [2], 2: [4], 4: [5]}
{1: [1], 3: [6], 2: [4], 4: [5]}
{1: [1], 3: [6], 2: [7], 4: [5]}
{1: [8], 3: [6], 2: [7], 4: [5]}

我想要的东西:

{1: [1]}
{1: [1], 3: [2]}
{1: [1], 3: [2], 2: [3]}
{1: [1], 3: [2], 2: [3,4]}
{1: [1], 3: [2], 2: [3,4], 4: [5]}
{1: [1], 3: [2,6], 2: [4], 4: [5]}
{1: [1], 3: [2,6], 2: [3,4,7], 4: [5]}
{1: [1,8], 3: [2,6], 2: [3,4,7], 4: [5]}

最佳答案

这一行 store[v[i]]=list() 每次都创建一个新列表

删除它并将下一个附加行更改为:

store.setdefault(v[i], list()).append(i+1)

只有列表不存在时才会创建列表。

或者使用collections.defaultdict(list)

关于python - 为什么列表不保存元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52896029/

相关文章:

python - 在字符串中查找子字符串旁边的所有分隔符并在 python 中替换

python - 有没有一种 pythonic 的方法来获取字典中列表中的变量总数?

python - json[更多级别] 听写 python

python - 如何用填充的 0 reshape Numpy 数组

python - 如何通过 Django 查看上传的文本文件?

python - 在Python中,如何将数据从Excel复制到网站?

python - 使用python从mysql查询列表中提取ip地址

r - 为R中的列表元素赋值

Python - 根据用户输入有效地从列表中选择

r - 错误: could not find function "overlay" after reinstall