Объект 'int' не повторяется при создании словаря - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь создать словарь в Python. Тем не менее, я хочу создать словарь, используя случайные значения. Желаемый вывод должен быть в форме {'a': 1, 'b': 2} в формате.

import numpy as np
import pandas as pd
import random
import string

value = np.random.random(10)
np.random.seed(42)
key = list(np.random.choice(list(string.ascii_lowercase), 10))
key, value

def map_values(key, value):
    i = len(key)
    j = len(value)
    for i in len(key):
        print('key[i]' +'value[j]')
        i = i+1
        j = j+1
    return map_values()

map_values(key, value)

Однако во время выполнения вышеприведенного кода я получил сообщение об ошибке: объект int не повторяется. Может кто-нибудь объяснить причину ошибки и исправить код, поскольку я новичок в python и пытаюсь выучить его.

1 Ответ

0 голосов
/ 05 июля 2018

В вашем коде есть несколько ошибок:

  1. Вам нужно перебрать range(len(key)), а не целое число len(key).
  2. Вы не инициализировали ни один словарь или пытались обновить словарь.
  3. Ваша функция возвращает map_values(), но рекурсивный алгоритм не требуется.
  4. Вы присваиваете переменные длинам массивов key и value, но затем переназначаете их в цикле for.
  5. Вы не используете индексы для извлечения элементов из ваших массивов key и value.

Таким образом, вы можете просто использовать dict + zip:

np.random.seed(42)

key = np.random.choice(list(string.ascii_lowercase), 10)
value = np.random.random(10)

res = dict(zip(key, value))

{'g': 0.83244264080042174,
 'h': 0.020584494295802447,
 'k': 0.70807257779604549,
 'o': 0.6011150117432088,
 's': 0.18182496720710062,
 't': 0.86617614577493518,
 'u': 0.96990985216199432,
 'w': 0.18340450985343382,
 'z': 0.21233911067827616}
...