使用嵌套的for循环更新字典

时间:2019-02-27 17:38:23

标签: python list dictionary for-loop

我在下面有两个for循环。在第一个for循环中,我遍历tstLst1中的元素,然后对每个元素进行遍历tstLst2中的元素,测试每个元素是否大于5,然后将tstLst2中的元素追加到新元素中 列出tstEmpt1。然后,我将tstLst1的每个元素的键列表从tstLst2的值列表更新为dict。我在下面收到“ 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'

1 个答案:

答案 0 :(得分:3)

您的问题是list.append()返回None,因此当您执行tstEmpt1=tstEmpt1.append(i)时,您要追加元素并将None分配给列表。由于None没有属性'update'作为错误状态,因此引发下一次迭代。

dictionary.update()相同。

删除作业应为您解决问题:

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