У меня есть довольно простой кусок кода, в котором я пытаюсь создать словарь, в котором значение для каждого ключа является списком. Если ключ существует, то я хотел бы добавить в список. Если значение не существует, я хотел бы создать список.
Для этого я использую следующий фрагмент кода:
artifact_content_data = {}
for i in range(0,len(content_data)):
for key in json.loads(dict(content_data.loc[i])['content_data']).keys():
if key in artifact_content_data:
print('Key exists')
print(json.loads(dict(content_data.loc[i])['content_data'])[key])
print(type(json.loads(dict(content_data.loc[i])['content_data'])[key]))
print(artifact_content_data[key])
artifact_content_data[key] = artifact_content_data[key].append(json.loads(dict(content_data.loc[i])['content_data'])[key])
print(artifact_content_data)
print('\n')
else:
print('Key does not exist')
print(key)
print(json.loads(dict(content_data.loc[i])['content_data'])[key])
artifact_content_data[key] = [json.loads(dict(content_data.loc[i])['content_data'])[key]]
print(artifact_content_data)
print('\n')
По какой-то причине, когда ключ не существует, я могу создать список. Но когда ключ уже существует, я не могу добавить его в список. Вот вывод, который я получаю:
Key does not exist
type1
0
{'type1': [0]}
Key does not exist
type2
0
{'type1': [0], 'type2': [0]}
Key does not exist
type3
0
{'type1': [0], 'type2': [0], 'type3': [0]}
Key does not exist
type4
0
{'type1': [0], 'type2': [0], 'type3': [0], 'type4': [0]}
Key does not exist
type5
0
{'type1': [0], 'type2': [0], 'type3': [0], 'type4': [0], 'type5': [0]}
Key exists
0
<class 'int'>
[0]
{'type1': None, 'type2': [0], 'type3': [0], 'type4': [0], 'type5': [0]}
Key exists
1
<class 'int'>
[0]
{'type1': None, 'type2': None, 'type3': [0], 'type4': [0], 'type5': [0]}
Key exists
2
<class 'int'>
[0]
{'type1': None, 'type2': None, 'type3': None, 'type4': [0], 'type5': [0]}
Key exists
1
<class 'int'>
[0]
{'type1': None, 'type2': None, 'type3': None, 'type4': None, 'type5': [0]}
Key exists
0
<class 'int'>
[0]
{'type1': None, 'type2': None, 'type3': None, 'type4': None, 'type5': None}
Key exists
0
<class 'int'>
None
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-174-b1cf77736794> in <module>()
7 print(type(json.loads(dict(content_data.loc[i])['content_data'])[key]))
8 print(artifact_content_data[key])
----> 9 artifact_content_data[key] = artifact_content_data[key].append(json.loads(dict(content_data.loc[i])['content_data'])[key])
10 print(artifact_content_data)
11 print('\n')
AttributeError: 'NoneType' object has no attribute 'append'
Мы ясно видим, что когда l oop попадает в блок «Ключ существует», он не добавляется в список. Вместо этого он делает значение None
. Я не уверен, почему это произошло.
Я печатаю все соответствующие значения в моем l oop, чтобы помочь выяснить проблему.
Любая помощь будет принята с благодарностью.