Python 2.7 处理字典列表中的None
通过此for循环: 范围内i的Python 2.7 处理字典列表中的None,python-2.7,list,dictionary,Python 2.7,List,Dictionary,通过此for循环: 范围内i的(len(数据_df)): 对于范围内的j(len(数据\ df.iloc[i]。事件\更新)): 打印(数据\ df.iloc[i]。事件\更新[j]。获取(“受影响的\组件”)) 我得到的回应如下: [{u'old_status':u'operation',u'code':u'rwdp37x0698r',u'name':u'AA',u'new_status':u'operation'}] [{u'old_status':u'partial_disrupt',u
(len(数据_df)):
对于范围内的j(len(数据\ df.iloc[i]。事件\更新)):
打印(数据\ df.iloc[i]。事件\更新[j]。获取(“受影响的\组件”))
我得到的回应如下:
[{u'old_status':u'operation',u'code':u'rwdp37x0698r',u'name':u'AA',u'new_status':u'operation'}]
[{u'old_status':u'partial_disrupt',u'code':u'rwdp37x0698r',u'name':u'AA',u'new_status':u'operational'}]
[{u'old_status':u'operational',u'code':u'rwdp37x0698r',u'name':u'AA',u'new_status':u'partial_dispension']
[{u'old_status':u'partial_dispension',u'code':u'31tyncvy5ng7',u'name':u'AB',u'new_status':u'operational'}]
[{u'old_status':u'operational',u'code':u'31tyncvy5ng7',u'name':u'AB',u'new_status':u'partial_dispension'}]
没有一个
没有一个
[{u'old_状态]:u'partial_disrupt',u'code':u'xvgbw19sgbrj',u'name':u'AC',u'new_状态]:u'operation',{u'old_状态]:u'partial_disrupt',u'code':u'tyncvy5ng7',u'name':u'AC',u'new u_'status':u'operation',{u'old_状态]:u'partial_大修',u'code':u'zgfkydf6p',u'name':u'AC',u'new operation',{u'old_status':u'partial_disrupt',u'code':u'rwdp37x0698r',u'name':u'AA',u'new_status':u'operation'},{u'old_status':u'partial_disrupt',u'code':u'lvj41y83ghdg',u'name':u'AD',u'new u____status':u'operation'},{u'old_'status':u'partial__'disru disru unction',u'qdjrpnyn4mb u',u'code':u'name',{u'old_status':u'partial_dispension',u'code':u'24zyv2d3p2jf',u'name':u'AC',u'new_status':u'operational'}]
没有一个
[{u'old_status':u'operational',u'code':u'31tyncvy5ng7',u'name':u'AA',u'new_status':u'major_dispension']
没有一个
没有一个
...
如果你注意到的话,这里有一些None。我知道那里没有值,所以我想把它转换成一个字典列表,看起来像这样[{'None':'None'}]
-这样它看起来像输出响应中的其他列表-这样我就可以将它保存到另一个列表中,这样我就可以从中获取名称(使用列表[I][j].dict.get()
)。我相信你明白了
问题是:
我能够将for loops的输出转换为字典列表(使用list.append()函数),并使用
infected_components_variable=[“NONE”,如果val是NONE-else,则为infected_components_variable中val的值]
受影响的\u组件\u变量
是包含上述for循环输出的列表。它如下所示:
[{u'old_status':u'operation',u'code':u'rwdp37x0698r',u'name':u'AA',u'new_status':u'operation'}]
[{u'old_status':u'partial_disrupt',u'code':u'rwdp37x0698r',u'name':u'AA',u'new_status':u'operational'}]
[{u'old_status':u'operational',u'code':u'rwdp37x0698r',u'name':u'AA',u'new_status':u'partial_dispension']
...
“没有”
...
这不符合我的目的,因为当我执行列出[I][j].dict.get()
,并且当它达到“NONE”时,它抛出一个错误,读取AttributeError:“str”对象没有属性“get”
,原因很明显
为了避免这一切,我可以这样做:
范围内i的(len(数据_df)):
对于范围内的j(len(数据\ df.iloc[i]。事件\更新)):
对于范围内的k(len(数据\u df.iloc[i]。事件\u更新[j]。获取(“受影响的\u组件”):
打印(数据\ df.iloc[i]。事件\更新[j]。获取(“受影响的\组件”)[k]。获取(“名称”))
出于同样明显的原因,这会引发同样的错误
因此,我认为我需要在列表级别执行以下操作:[{'None':'None'}]
,因此当我执行list[I][j].dict.get()
时,我会得到正确的响应
非常感谢您的帮助。为什么不设置如下变量
noneResponse = [{u'None': u'None'}]
如果没有,则分配该值
AffectedComponentsVariable = data_df.iloc[i].incident_updates[j].get("affected_components")
AffectedComponentsVariable = NoneResponse if AffectedComponentsVariable is None else AffectedComponentsVariable
所以我刚刚注意到,我从初始for循环中得到的输出是:print(data\u df.iloc[I].incident\u updates[j].get(“受影响的\u组件”)
与我将其附加到列表中时(名为受影响的\u组件变量
)的输出不同。顺序已经改变;也就是说,列表中dict的顺序变得混乱。这不重要,但看起来即使是列表的顺序也改变了。如果我理解正确的话,情况不应该是这样。仅供参考,正如您可能猜到的,这是一个JSON数据。除此之外,JSON和Python列表是否存在限制?