def dict_ordered(obj):
if isinstance(obj, dict):
return sorted((k, dict_ordered(v)) for k, v in obj.items())
if isinstance(obj, list):
return sorted(dict_ordered(x) for x in obj)
else:
return obj
#递归删除json/dict中的某个值
def dict_del(key,obj):
if isinstance(obj, dict):
if key in obj:
obj.pop(key)
for k, v in obj.items():
dict_del(key,v)
if isinstance(obj, list):
for x in obj:
dict_del(key,x)
else:
return obj
#判断json/dict中是否存在某个key
def dict_has_key(key,obj):
if isinstance(obj, dict):
for k, v in obj.items():
if k == key:
return True
else:
ret = dict_has_key(key,v)
if ret:
return True
elif isinstance(obj, list):
for x in obj:
ret = dict_has_key(key,x)
if ret:
return True
else:
if __name__ == '__main__':
tester = {
"base_config":{
"enforce":{
"value":"0",
"inherit":"0",
"global":"0"
"modify":{
"value":"0",
"inherit":"0",
"global":"0"
"safe_control_list":{
"list":[
"gid":"0",
"gname":"全网计算机",
"isactive":"1",
"rule_id":"0",
"rule_name":"请选择规则",
"time_range":"所有时间",
"time_range_id":"1",
"policy_tpl":"33",
"policy_tpl_id":"17",
"isonline":"3",
"priority":"1"
print(dict_has_key("rule_id",tester))
print(dict_del("policy_tpl_id",tester))
print(dict_ordered(tester))
在使用词典
dict
时,如果不清楚其中是否
存在
某个
key
,但又想调用的话,就需要先判断一下词典
dict
中是否
存在
某个
key
了,这里简单记录一下几种方法。
一、in方法
二、get方法
一、in方法
在介绍词典
dict
的使用之前,提一下集合 set 吧,set 的特点就是无重复元素(采用 hash 算法),我们可以用非常简单快速的方法来判断其中是否
存在
某个元素,代码如下:
>>> a = [1, 2, 3, 4, 5]
>>> a_set = set(a)
>>> 3 in a_set
上诉代码判断元素 3 是否在集合 a_set 中,
存在
返回 True,不存
Dict
ionary<string, string>
dict
= new
Dict
ionary<string, string>();
string
key
="a";
if(
dict
.
Key
s.Any((e)=>string.Compare(e,
key
)==0)==false){
dict
[
key
]="1";
2TryGetValue()
Dict
ionary<string, string> .
在日常自动化测试中,
json
解析是经常要做的事情。但是有的
json
格式嵌套
复杂
,如果按照顺序解析的方法,需要写非常冗长的if判断,有以下几个缺点:1、无复用性:对于其他
json
格式或者当前格式稍微修改,就需要再写一套;2、健壮性差:冗长的判断极易写错。
下面是一个原始
json
串和经过
json
解析工具(http://app.baidu.com/app/enter?appid=159
一、
python
中的字典1、字典的表示方式:{
key
1:value1,
key
2:value2,
key
3:value3};2、字典的
key
通常情况下是字符串,也可以使用其他不可变的数据类型;3、字典的
key
值不能重复,如果在一个字典中
存在
相同的
key
,则后面的value会覆盖前面的value;4、获取字典的长度: len()它的长度是3;5、字典的修改和添加:修改:
dict
_name[exited ...
string =" { "status": "error", "messages": ["Could not find resource or operation 'BZK1.MapServer' on the system."], "code": 404}"print '对象:' string输出结果为:对象:{u'status': u'error', u'code': 404,
项目很多时候需要找到一个层层嵌套的
json
里面某一个或者几个
key
的值,这时候就需要遍历整一个
json
来获得这些值。
因此我封装了一个class,专门给大家来在一个
json
中
递归
查找需要的
key
的value,
下面给出源码(复制到自己的项目里面引入即可) 下面有介绍用法
# coding:utf8
import
json
class Get
Key
Value(object):
def __...
之前在实际的项目研发中,需要对一些
复杂
的
json
数据进行取值操作,由于
json
数据的层级很深,所以经常取值的代码会变成类似这样:
value = data['store']['book'][0]['title']
有的甚至会比这个更长,看起来特别不舒服,而且假如原始的数据发生了一个变化,你需要针对你的代码再做一个工作量不小的适配工作,非常不方便,所以我想能否可以快速的对一串
json
数据取到想要的
key
对应的value值呢?
经过一段尝试,终于成功的解决了这个问题,其实核心思想就是将取值过程流程化,代
如下所示:dic =
dict
()dic['a'] = 1dic['b'] = 2dic['c'] = 3print(dic.items())import
json
json
s =
json
.dumps(dic)print(
json
s)结果:dic is:
dict
_items([('c', 3), ('b', 2), ('a', 1)])
json
s: {"c": 3, "b": 2, "a": 1...
#file = open("/Users/hzp/Desktop/multiwoz/data/multi-woz/delex.
json
")
#a =
json
.load(file)
#b = a['SNG01856.
json
']
#c = open("/Users/hzp/Desktop/test.
json
",'w')
#c.write(
json
.dump...