【问题标题】:'int' object is not iterable while creating dictionary'int' 对象在创建字典时不可迭代
【发布时间】:2018-12-14 03:12:13
【问题描述】:

我正在尝试在 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' object is not iterable。有人可以解释错误的原因并纠正代码,因为我是 python 新手并正在尝试学习它。

【问题讨论】:

  • for i in len(key): 应该是 for i in range(len(key)):xrange(len(key)) 如果你在 python 2 中。
  • in for i in len(key):, len(key) 返回一个 int 并且您尝试使用 for 循环对其进行迭代,因此出现错误。
  • 你能指定所需输出的修正代码吗?

标签: python pandas numpy dictionary random


【解决方案1】:

您的代码有几个错误:

  1. 您需要遍历range(len(key)),而不是整数len(key)
  2. 您尚未初始化任何字典,或尝试更新字典。
  3. 您的函数返回map_values(),但不需要递归算法。
  4. 您将变量分配给 keyvalue 数组的长度,然后在您的 for 循环中重新分配它们。
  5. 不要使用索引从 keyvalue 数组中提取元素。

因此,您可以使用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}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-10
    • 2020-12-27
    • 1970-01-01
    • 2018-03-19
    • 2021-02-12
    • 2013-08-02
    • 2012-06-21
    相关资源
    最近更新 更多