【问题标题】:typerror in python while adding value to keyspython中的typerror同时为键添加值
【发布时间】:2016-07-01 13:26:47
【问题描述】:

这就是我想要做的,但我不断收到错误有什么想法吗?

third_value_list =[0,1] 
for i in third_value_list 
num_list = [1,2] 
val_list = [0,1] 
dict1 = dict((k, [v]+i) for (k, v) in zip(num_list,val_list)) 
print dict1 

TypeError:can only concatenate list (not 'int') to list

期望的输出 {1:[0,0],2:[1,0],1:[0,1],2:[1,1]}

【问题讨论】:

  • 您循环播放的third_value_list 的目的是什么?如果它有多个值,你希望你的代码做什么?
  • 你认为[v]+i会做什么?将倒数第二行分成几条语句,以便更清楚地了解哪部分出现故障。

标签: python


【解决方案1】:

如果您想在字典中添加一个值,只需确保这些值从一开始就是元组或列表。完成此操作后,您可以:

    d = {1:(0,),2:(0,)}
    d[1] = d[1]+(0,)

现在 d[1] 出现了一个新值。除此之外,您可能必须构建一个函数来处理类型(列表、元组、int 等)之间的差异。

【讨论】:

    【解决方案2】:

    我不确定您到底要构建什么,但您只需通过

    即可获得所需的结果
    num_list = [1,2]
    val_list = [0,1]
    dict1 = dict((k, [v, 0]) for (k, v) in zip(num_list,val_list))
    

    您的代码中的主要问题是您试图添加一个列表和一个整数

    [v]+i
    

    我将其替换为 [v,i]。但由于i 始终为 0,所以您会得到我在上面发布的答案。

    【讨论】:

      【解决方案3】:

      首先,您将永远无法获得这样的输出,因为您不能在字典中拥有重复的键。为现有键分配值将清除旧值。

      【讨论】:

        【解决方案4】:

        我添加 [] 并且我得到了所需的输出,是的,这是可能的

        third_value_list =[0,1] 
        for i in third_value_list 
        num_list = [1,2] 
        val_list = [0,1] 
        dict1 = dict((k, [v]+[i]) for (k, v) in zip(num_list,val_list)) 
        print dict1 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-01-07
          • 1970-01-01
          • 1970-01-01
          • 2021-10-17
          • 1970-01-01
          • 2019-04-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多