Создание реплики данных с использованием цикла for - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть словарь, который содержит 36 элементов данных.Я хочу повторить каждую запись 100 раз.Таким образом, общее количество записей составит 3600.

def createDataReplication(text_list):
    data_item = {}
    print(len(text_list))
    for k,v in text_list.iteritems():
        for i in range(0,100):
            data_item[k+str(i)] = v
    print(len(data_item))

output

36
3510

Почему это 3510, а не 3600?Я делаю какую-либо ошибку?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Учтите, что ключ типа '110' может быть создан двумя способами:

k+str(i) = '1' + str(10) или k+str(i) = '11' + str(0).

Вам необходимо заменить k+str(i) на что-то гарантированноесоздавать уникальные ключевые значения.Один из способов сделать это - сделать ключ кортежем: (k, i):

data_item[k,i] = v
0 голосов
/ 28 сентября 2018

Объединение k+str(i) повторяется для некоторых комбинаций k и i.Ключи словаря должны быть уникальными.Это приводит к перезаписи существующих ключей.

Я предлагаю вместо этого использовать ключи tuple, что, кроме того, приводит структуру данных в соответствие с вашей логикой:

for k, v in text_list.iteritems():
    for i in range(100):
        data_item[(k, i)] = v
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...