文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

面试宝典_Python.常规算法.000

2023-01-31 02:07

关注

面试题目:

1. 用PYTHON实现一个扁平化的字典,如{'a': {'b': '1'}}扁平化处理后变成{'a.b': 1}?


解题思路:

1. 由于字典可能是无限嵌套的,所以第一印象就想到采用递归函数完成,由于扁平化数据需要零时存储以及永久存储,而字典在递归中是非常方便的,递归函数中只需要遍历字典元素如果子元素不是字典则计算扁平化字典的key然后记录,否则就继续递归此子元素,依次类推.


具体实现:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2016-12-24 17:32:54
# @Author  : 李满满 (xmdevops@vip.qq.com)
# @Link    : http://xmdevops.blog.51cto.com/
# @Version : $Id$

from __future__ import absolute_import
# 说明: 导入公共模块
# 说明: 导入其它模块


def flat_dict(src_dict, res_dict):
    if not isinstance(src_dict, dict):
        return
    for key in src_dict:
        # 说明: 防止第一次零时数据中多加一个.
        cur = res_dict['_']
        if not cur:
            res_dict['_'] += key
        else:
            res_dict['_'] += '.{0}'.format(key)
        # 说明: 如果当前元素不是字典则记录它
        if not isinstance(src_dict[key], dict):
            res_dict.update({res_dict['_']: src_dict[key]})
            # 说明: 既然不是字典则可能需要遍历同级元素所以需要还原到加key之前的数据
            res_dict['_'] = res_dict['_'].rstrip('.{0}'.format(key))
            continue
        # 说明: 如果当前元素依然是字典则继续递归此元素
        flat_dict(src_dict[key], res_dict)


if __name__ == '__main__':
    # 说明: _中保存零时扁平化数据
    result = {'_': ''}
    manman = {'a': {'b': {'c': 1, 'd': 2}, 'x': 2}}
    flat_dict(manman, result)
    # 说明: 处理完后pop出_零时数据
    result.pop('_')
    print result


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯