python面试题

Posted fcc-123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python面试题相关的知识,希望对你有一定的参考价值。

 
需求:输入以下json串,返回字典,字典值仅包括json最底层数据
输入:my_dict = {
"name":"alien",
"country":"china",
"other":{
"age":"18",
"gender":"man"
},
"school":"HLW"
}
输出:{‘country‘: ‘china‘, ‘school‘: ‘HLW‘, ‘age‘: ‘18‘, ‘name‘: ‘alien‘, ‘gender‘: ‘man‘}

 1、 背景知识

  1)item(),遍历字典

  2)isinstance(),判断对象的变量类型

2、思路

获取json中key和value值,判断如果value是不是字典类型,则循环递归获取key和value值

3、获取json最底层数据(一)

技术图片
def read_json_only1(dict_str):
    dict_result = {}
    for k,v in dict_str.items():
        if isinstance(v,dict):      #判断如果value是字典类型,则提取字典中的key和value
            for k2,v2 in v.items():
                dict_result[k2]=v2
        else:
            dict_result[k] = v
    print dict_result

if __name__ == ‘__main__‘:
    read_json_only1(my_dict)
技术图片

输入:

my_dict = {
"name":"alien",
"country":"china",
"other":{
"age":"18",
"gender":"man"
},
"school":"HLW"
}

输出:{‘country‘: ‘china‘, ‘school‘: ‘HLW‘, ‘age‘: ‘18‘, ‘name‘: ‘alien‘, ‘gender‘: ‘man‘}

4、发现上面方法只能满足只有一到两层的情况,如果两层下面的value 还是字典,就没法获取到,于是打个问号,能否用递归方法实现

如:输入串为

my_dict = {
"name":"alien",
"country":"china",
"other":{
"age":"18",
"gender":"man",
"other":{
"address":"beijing",
"phone":"13800138000"
}
},
"school":"HLW"
}

输出结果为:{‘school‘: ‘HLW‘, ‘name‘: ‘alien‘, ‘country‘: ‘china‘, ‘age‘: ‘18‘, ‘other‘: {‘phone‘: ‘13800138000‘, ‘address‘: ‘beijing‘}, ‘gender‘: ‘man‘}

5、优化,使用递归获取获取json最底层数据(二)

技术图片
dict_result = {}
def read_json_only(dict_str):
    for k,v in dict_str.items():
        if isinstance(v, dict):
            read_json_only(v)
        else:
            dict_result[k] = v
    return dict_result

if __name__ == ‘__main__‘:
   print read_json_only(my_dict)
技术图片

输出:{‘school‘: ‘HLW‘, ‘name‘: ‘alien‘, ‘country‘: ‘china‘, ‘age‘: ‘18‘, ‘phone‘: ‘13800138000‘, ‘gender‘: ‘man‘, ‘address‘: ‘beijing‘}

 

注意,for循环过程return只返回第一次满足条件的结果,会出现其余的没有返回的问题。

原文链接:http://www.cnblogs.com/cailingsunny/p/10631757.html

以上是关于python面试题的主要内容,如果未能解决你的问题,请参考以下文章

Java进阶之光!2021必看-Java高级面试题总结

经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!

十条Python面试题陷阱,看看你是否会中招

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

python面试题搜罗

python面试题搜罗