删除python中的dict上没有任何值

时间:2016-07-25 13:09:21

标签: python mongodb list dictionary nonetype

我想删除None值来修改我的mongo数据库集合数据。我有一个嵌套的词典。

我做了一个查询来获取我的db上的所有数据库:

doc = db.events.find()
for document in doc:
    print  document

一份印刷文件如下:

{ u'_id': u'55f16d2a0f5cb40aa26a6f1b', u'event': {u'values': u'None', u'condition': u'None', u'comment': u'', u'date': u'None', u'delete': u'false'}}

所以我想替换每个文档中的所有None值,其中“无”写入No,并将更新的文档保存在数据库中。

所以我这样做了:

def replace_none_values():
  doc = db.events.find()
  for document in doc:
    for key, value in document.items():
        if key == 'event':
           event_part = value
           for key1, value1 in event_part: 
               if value1 is None:
                  document['event'][key1] = 'No'
    db.events.save(document)
replace_none_values()

for key1, value1 in event_part:中的代码未执行。我不知道为什么,我在这里做错了什么?有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

在您的示例中,当您致电replace_none_values

时,缺少括号

使用:

replace_none_values() 

而不是:

replace_none_values

答案 1 :(得分:0)

再次使用items方法,因为您拥有的是嵌套词典。请注意,字典中的值不是常量None,而是字符串'None',因此if value1 is None不会按照您的意图执行:

for key1, value1 in event_part.items(): 
#                                ^
     if value1 == 'None':
         document['event'][key1] = 'No'

然后调用函数:replace_none_values()