【问题标题】:How can I unpack non-iterable items?如何解压不可迭代的项目?
【发布时间】:2020-06-04 11:36:01
【问题描述】:

这是我的代码:

d={(i,j):i+j for i in range(1,7) for j in range(1,7)}

from collections import defaultdict 
dinv = defaultdict(list) 
for i,j in d.values(): 
    dinv[j].append(i)

X={i:len(j)/36. for i,j in dinv.iteritems() } 
print (X)

这是我的回溯错误。

TypeError                                 Traceback (most recent call last)
<ipython-input-20-d6b279f4a6a8> in <module>
      4 from collections import defaultdict
      5 dinv = defaultdict(list)
----> 6 for i,j in d.values():
      7     dinv[j].append(i)
      8 

TypeError: cannot unpack non-iterable int object

【问题讨论】:

  • 这些值是一个 int 列表,所以你不能解压到 i 和 j,你想做什么?顺便说一下,关键是一个 2 元素元组

标签: python probability probability-theory probability-distribution


【解决方案1】:

要迭代键和值,您需要使用 .items() 并且您最好为变量使用更好的名称

dinv = defaultdict(list) 
for pair,v_sum in d.items(): 
    dinv[v_sum].append(pair)

接下来你会发现defaultdict 没有属性iteritems,也可以使用items

X = {key:len(values)/36. for key,values in dinv.items()} 

【讨论】:

    【解决方案2】:

    您可能指的是d.items()d.keys()(或只是d),而不是for i,j in d.values(): 中的d.values()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-11
      • 2015-08-28
      • 2020-01-28
      • 2019-04-22
      • 1970-01-01
      • 2021-01-30
      • 2016-12-07
      相关资源
      最近更新 更多