原文数据:
area_dict = {
'huadong': {
'shandong': {
'jinan': [
u'历下区',
u'市中区',
],
'qingdao': [
u'市南区',
u'市北区',
]
},
'zhejiang': {
'hangzhou': [
u'下城区',
u'江干区',
],
'wenzhou': [
u'龙湾区',
u'瓯海区',
],
},
}
}
具体要求:
多级菜单
可依次选择进入各子菜单
代码流程:
代码实现:
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: http://my.oschina.net/pydevops/
# Purpose:
#
"""
import pprint
def main():
"""Main function."""
cur_level = 1
area_dict = {
'huadong': {
'shandong': {
'jinan': [
u'历下区',
u'市中区',
],
'qingdao': [
u'市南区',
u'市北区',
]
},
'zhejiang': {
'hangzhou': [
u'下城区',
u'江干区',
],
'wenzhou': [
u'龙湾区',
u'瓯海区',
],
},
}
}
while True:
# 网页中多级菜单的下拉就相当于输入
# --------------------------------------------------------
level_str = '-> '*cur_level
list_or_tuple = False
if isinstance(area_dict, dict):
key_enum = enumerate(area_dict.keys())
elif isinstance(area_dict, (list, tuple)):
list_or_tuple = True
key_enum = enumerate(area_dict)
else:
print '%s %s %s' % (level_str, 0, area_dict)
break
for area_key, area_val in key_enum:
print '%s %s %s' % (level_str, area_key, area_val)
cur_choice = raw_input('please input your choice: ').strip()
if cur_choice.isdigit():
cur_choice = int(cur_choice)
else:
continue
if list_or_tuple:
key_value = area_dict[cur_choice]
else:
key_name = area_dict.keys()[cur_choice]
key_value = area_dict[key_name]
area_dict = key_value
cur_level += 1
# --------------------------------------------------------
if __name__ == '__main__':
main()