Почему список не сохраняет элементы? - PullRequest
0 голосов
/ 19 октября 2018
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]}

1 Ответ

0 голосов
/ 19 октября 2018

Эта строка store[v[i]]=list() создает новый список каждый раз, когда

удаляет его и изменяет следующую добавляемую строку на:

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

Это создаст список, только если он не 't существует.

В качестве альтернативы используйте collections.defaultdict(list)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...