【问题标题】:update dict using nested for loop使用嵌套的 for 循环更新 dict
【发布时间】:2019-07-21 12:35:38
【问题描述】:

我在下面有双 for 循环。在第一个 for 循环中,我遍历 tstLst1 中的元素,然后对于每个元素,我遍历 tstLst2 中的元素,测试每个元素以查看它是否大于 5,然后将 tstLst2 中的元素附加到新的 列出 tstEmpt1。然后,我使用 tstLst2 中的值列表更新 dict,并将 tstLst1 的每个元素作为键。我在下面收到“Nonetype”错误,我不知道为什么。有人可以指出问题并提出解决方案吗?

代码:

tstLst1=[1,2,3]
tstLst2=[2,5,6]

tstDict1={}



for j in tstLst1:

    tstEmpt1=[]

    for i in tstLst2:

        if i >5:

            tstEmpt1=tstEmpt1.append(i)

    tstDict1=tstDict1.update({j:tstEmpt1})

错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-19-89e025227797> in <module>
     16             tstEmpt1=tstEmpt1.append(i)
     17 
---> 18     tstDict1=tstDict1.update({j:tstEmpt1})
     19 

AttributeError: 'NoneType' object has no attribute 'update'

【问题讨论】:

    标签: python list dictionary for-loop


    【解决方案1】:

    您的问题是 list.append() 返回 None 因此当您执行 tstEmpt1=tstEmpt1.append(i) 时,您将附加元素并将 None 分配给列表。下一次迭代抛出,因为None 没有属性“更新”作为错误状态。

    dictionary.update() 相同。

    删除分配应该对你有用:

    for j in tstLst1:
      tstEmpt1=[]
      for i in tstLst2:
        if i >5:
          tstEmpt1.append(i)
      tstDict1.update({j:tstEmpt1})
    

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 2021-12-10
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 2022-01-10
      相关资源
      最近更新 更多