python之三层菜单递归
首先非常感谢11期的学长薜保库提供了一种非常实用函数递归方法,让实现三层菜单如此简单,不过对所遍历的嵌套字典或列表格式有所要求。有特定的环境下非常实用。
主要针对中国的各省市区进行展示,采用了百度的js接口:
http://passport.baidu.com/js/sitedata_bas.js
格式大概如下:
var sitedata =
[
{ name:"请选择", sub:[{name:"请选择"}], type:1},
{ name:"北京", sub:[{name:"请选择"},{name:"东城区"},{name:"西城区"},{name:"崇文区"},{name:"宣武区"},{name:"朝阳区"},{name:"海淀区"},{name:"丰台区"},{name:"石景山区"},{name:"房山区"},{name:"通州区"},{name:"顺义区"},{name:"昌平区"},{name:"大兴区"},{name:"怀柔区"},{name:"平谷区"},{name:"门头沟区"},{name:"密云县"},{name:"延庆县"},{name:"其他"}], type:0},
{ name:"广东", sub:[{name:"请选择",sub:[]},
{ name:"广州", sub:[{name:"请选择"},{name:"越秀区"},{name:"荔湾区"},{name:"海珠区"},{name:"天河区"},{name:"白云区"},{name:"黄埔区"},{name:"番禺区"},{name:"花都区"},{name:"南沙区"},{name:"萝岗区"},{name:"增城市"},{name:"从化市"},{name:"其他"}],type:0},
{ name:"深圳", sub:[{name:"请选择"},{name:"福田区"},{name:"罗湖区"},{name:"南山区"},{name:"宝安区"},{name:"龙岗区"},{name:"盐田区"},{name:"其他"}], type:0},
{ name:"珠海", sub:[{name:"请选择"},{name:"香洲区"},{name:"斗门区"},{name:"金湾区"},{name:"其他"}],type:0},
{
{ name:"汕头", sub:[{name:"请选择"},{name:"金平区"},{name:"濠江区"},{name:"龙湖区"},{name:"潮阳区"},{name:"潮南区"},{name:"澄海区"},{name:"南澳县"},{name:"其他"}],type:0},
{ name:"韶关", sub:[{name:"请选择"},{name:"浈江区"},{name:"武江区"},{name:"曲江区"},{name:"乐昌市"},{name:"南雄市"},{name:"始兴县"},{name:"仁化县"},{name:"翁源县"},{name:"新丰县"},{name:"乳源瑶族自治县"},{name:"其他"}],type:0},
}
具体代码如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'xuebk'
import logging
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
logger = logging.getLogger(__name__) def search_a(sitedata,search=None):
if search is None:
for x in sitedata:
print x['name'],",",
search = raw_input('请输入相应名称.:')
print "search:"+search
for i in sitedata:
if search != i['name']:
continue
print('查询到%s'%(i['name']))
if 'sub' in i.keys():
search_a(i['sub']) if __name__ == '__main__':
search_a(sitedata_bas)
递归调用
python之三层菜单递归的更多相关文章
- Python之三层菜单
三层菜单,根据用户所选数字,进入子菜单.一级一级呈现. menu = { 'Beijing': { "ChaoYang": { "CBD": ['CICC', ...
- python之编写三层菜单(第一天)
作业三:多级菜单 三级菜单 可依次选择进入各子菜单 所需新知识点:列表.字典 针对此菜单程序的设计,使用了yaml格式的文本,由python对其内容进行解析为多重字典,然后对字典进行遍历,判断并输出三 ...
- python打怪之路【第三篇】:利用Python实现三级菜单
程序: 利用Python实现三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 coding: menu = { '北京':{ '朝阳':{ '国贸':{ 'CICC':{}, ' ...
- MenuStrip菜单递归
C# TreeView菜单,MenuStrip菜单递归动态生成例子 http://www.cnblogs.com/ajiaojiao0303/articles/1884772.html http:// ...
- python学习:函数的递归调用
计算阶层 普通方法: -使用循环 #!/usr/bin/python def factorial(n): sum = 1 for i in range(1,n+1): ...
- python之三级菜单
python之三级菜单 要求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功 ...
- Python之文件处理-递归删除特定文件
Python之文件处理-递归删除特定文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import os def delete_particular_fi ...
- 对于python装饰器结合递归的进一步理解
对于python装饰器结合递归的进一步理解 代码如下: import functools def memoize(fn): print('start memoize') known = dict() ...
- 在PyQt中构建 Python 菜单栏、菜单和工具栏
摘要:菜单.工具栏和状态栏是大多数GUI 应用程序的常见且重要的图形组件.您可以使用它们为您的用户提供一种快速访问应用程序选项和功能的方法. 本文分享自华为云社区<Python 和 PyQt:创 ...
随机推荐
- 人工神经网络NN
[面向代码]学习 Deep Learning系列 http://blog.csdn.net/coolluyu/article/details/20214617 正则化的最小二乘法 深入浅出LSTM神经 ...
- spring装配---处理自动装配的歧义性
一.歧义性 当我们使用spring的注解进行自动装配bean时,如果不仅有一个bean能够匹配结果的话,会抛出NoUniqueBeanDefinitionException: 例如本例中 当sprin ...
- NGUI渲染流程
1 渲染流程 NGUI的渲染流程其实就是把Widget组件生成Mesh所需要的缓存数据,然后生成对应的DrallCall组合对应数据,生成渲染需要的Mesh数据,提交渲染. Widget(数据) UI ...
- python学习道路(day9note)(socketserver编程,ftp)
1.ftp client #!/usr/bin/env python #_*_coding:utf-8_*_ import socket import subprocess user_data = { ...
- Self-Host Web API 学习笔记
ASP.NET Web API 不需要 IIS,直接使用控制台程序可以实现. 一.创建一个新的控制台程序,项目名为 HostApi 二.设置目标框架为.NET Framework 4 三.NuGet添 ...
- requirejs代码结构分析
一.函数入口函数. req = requirejs = function (deps, callback, errback, optional) { //Find the right context, ...
- 关于AFNetworking中header的bug问题
关于AFNetworking中header的bug问题 [摘要:AFNetworking那个正在ios开辟中便未几道了,网上一搜一大推,然则详细用法我便没有道了,偶然间我会整顿一下详细的一些用法.本日 ...
- DotNetBar grid筛选 按时间筛选
PatientDiaryPanel.Columns["RECORDDATE"].FilterExpr = string.Format("date(RECORDDATE) ...
- 使用 JDBC 和 JavaTemplate 查询SQL语句返回 List<Map<String,Object>>
使用JDBC执行sql语句返回List 类型: public class JdbcUtil { private static Log log = LogFactory.getLog(JdbcUtil. ...
- angularJS实现二级联动查询以及自定义过滤器的使用
<!DOCTYPE html><html lang="en"><head> <meta http-equiv="Conte ...