请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

今天面试碰见三个问题

话说今天头一回面试 结果问的问题几乎全是python相关的。。。有点遭不住。
还记得有三个问题没答上来:
1.nginx跟gunicorn通信的方式是什么?
2.tuple([1, 2])是浅拷贝还是深拷贝?
3.设计一个函数,将形如{'jack':{'math':{'teacher':'xxx', 'score':'10'}}}的字典展开成形如{'jack_math_teacher': 'xxx', 'jack_math_score': '10'}这样的字典?
希望大家也可以讨论讨论碰着的面试题。

正在回答 回答被采纳积分+3

3回答

码农小杨 2019-03-16 08:13:58

第一个应该是通过 NGINX配置里面的模块协议

第二个问题 如果是可变对象 作为参数 那么是浅拷贝

第三个问题 递归

我写下我简陋的写法 

key_string = ''
result_dict = {}


def dict_compress(some_dict):
   global key_string
   global result_dict

   for key, value in some_dict.items():

       if isinstance(value, dict):
           key_string += str(key)
           key_string += '_'
           return dict_compress(value)
       else:
           result_key = key_string + str(key)
           result_dict.update({result_key: value})

   return result_dict



等待老师回答

0 回复 有任何疑惑可以回复我~
  • def dict_compress(key_string='', some_dict=None):
       result_dict = {}
       if some_dict is None:
           some_dict = {}
       source_key = key_string
       for key, value in some_dict.items():
           if isinstance(value, dict):
               key_string += str(key)
               key_string += '_'
               some_dict.pop(key)
               return dict(dict_compress(key_string, value), ** dict_compress(source_key, some_dict))
           else:
               result_key = key_string + str(key)
               result_dict.update({result_key: value})
       return result_dict
    回复 有任何疑惑可以回复我~ 2022-05-12 11:13:15
djjcool 2019-03-15 10:19:17

我也是个小菜鸟。。。

第一个我看法和你一样。

第二个是浅拷贝

第三个,还蛮复杂的,我这么写的

def unpack(d):
    new_dic = {}
    for name in d:
        for subj in d[name]:
            for info in d[name][subj]:
                new_dic[name+"_"+subj+"_"+info]=d[name][subj][info]
            return new_dic






0 回复 有任何疑惑可以回复我~
  • 提问者 慕瓜2058331 #1
    兄弟第三题我虽然写的是这样,但他意思应该不止这几项,假设有n层嵌套,我觉得应该是用递归,但是我当时怎么处理key值没想好。。。相似的例子,展开一个内嵌列表:
    def flatten(l):
        res = []
        for l1 in l:
            if hasattr(l1, "__iter__") and not isinstance(l1, str):
                for l2 in flatten(l1):
                    res.append(l2)
            else:
                res.append(l1)
        return res
    回复 有任何疑惑可以回复我~ 2019-03-15 11:29:53
  • djjcool 回复 提问者 慕瓜2058331 #2
    理解你的意思了,谢啦
    回复 有任何疑惑可以回复我~ 2019-03-15 14:07:15
提问者 慕瓜2058331 2019-03-14 18:55:18

第一个问题我回答是unix socket 面试官也没说对不对。。。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
Python工程师面试宝典 一线大厂资深面试官亲授
  • 参与学习       1013    人
  • 解答问题       92    个

Python工程师面试必看,资深面试官亲授,倍增面试成功率

了解课程
意见反馈 帮助中心 APP下载
官方微信