关于json:python-从dict/list中移除项

Python - remove item from Dict/List

本问题已经有最佳答案,请猛点这里访问。

我对Mongo的WebService调用返回以下JSON。我需要迭代这个JSON值并删除item-product_语言,因为它包含空/空字符串。

有什么关于怎么做的想法吗?

python 3.4版本。

{

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
"prod_doc_key" :"613509",

"metadata" : {
   "channel_availability_for" : {
       "description" :"Kiosk and Web",
       "id" : 0
    },

   "dd_sold_out_flag" : 0,
   "dd_units_sold_flag" : 0,
   "display_type_id" : {
       "id" : 0
    },
   "preorder_flag" : 0,
   "price_in_cart_flag" : 0,
   "product_language" :"",
   "product_type" : {
       "id" : 0,
       "name" :"Product"
    },
   "promotion_flag" : 0,
   "published" : 1,
   "rebate_flag" : 0


}

}


加载JSON,如果它是空的,则移除该键:

1
2
3
4
import json
item =json.loads(src)
if 'product_language' in item and not item['product_language']:
    item.pop('product_language')

在python中,空字符串等于false。


使用json模块加载JSON。

1
2
3
4
5
6
7
8
9
10
11
import json

with open('demo.txt','r+') as f:
    dic=json.load(f)

    try:
        if dic['metadata']["product_language"]:
            del dic['metadata']["product_language"]
    except KeyError:
        print"Key doesn't exist"
    print dic

注意,这里的dic是一本字典,您可以通过打印type(dic)来确定它。所以,您可以对它执行任何字典操作,例如,我删除了dic的一个键。要遍历dic,请执行以下操作:

1
2
for key,value in dic.iteritems():
    #do_something


可以从字典中删除键k,语法如下:

1
del d[k]