обновить dict, используя вложенный цикл for - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть двойной цикл ниже.В первом цикле for я перебираю элементы в tstLst1 и затем для каждого элемента я перебираю элементы tstLst2, тестирую каждый элемент, чтобы узнать, больше ли он, чем 5, затем добавляя элементы из tstLst2 в новый списокtstEmpt1.Затем я обновляю dict списком значений из tstLst2 для каждого элемента tstLst1 в качестве ключей.Я получаю сообщение об ошибке "Nontype" ниже, я не знаю почему.Может кто-нибудь указать на проблему и предложить решение?

Код:

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 голосов
/ 27 февраля 2019

Ваша проблема в том, что 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})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...