字典

字典

字典特性: 字典是无序的,key必须是唯一的

  • 创建字典
    >>> d = {'name':'lily','age':22}
    >>> d = dict({'name':'lily','age':22})
    >>> d = dict([('two', 2), ('one', 1), ('three', 3)])
    >>> d=dict(k1='aaa',k2='bbb')
    >>> d= dict(zip(['one', 'two', 'three'], [1, 2, 3]))
  • 索引    dic['name']
  • 新增    dic['info']='girl'  
  • 删除    dic.pop('info)
  • 循环    
  • 长度  len(dic)
  • 键,值,键值对  dic.keys()    dic.values()  dic.items()
     |  clear(...)    # 清空字典
     |  
     |  copy(...)    #拷贝
     |      D.copy() -> a shallow copy of D
     |  
     |  fromkeys(iterable, value=None, /) #创建新字典.以序列seq中元素做字典的键,value为字典所有键对应的初始值
     |        

             >>> dict1=dict1.fromkeys(range(1,3),'val')
             >>> dict1
                {1: 'val', 2: 'val'}

          >>> seq=(1,2,3)
           >>> d={}
           >>> d.fromkeys(seq,10)
            {1: 10, 2: 10, 3: 10}
     |
     |  get(...)    #根据key获取值,如果k不存在默认返回none,如果设置了k,v 则返回v ,不改变dic
     |      >>> dic = {'age': 22, 'name': 'lily'}
            >>> dic.get('name','bao')
            'lily'
            >>> dic.get('info','girl')
            'girl'
            >>> dic
             {'age': 22, 'name': 'lily'}
     |  
     |  items(...)  #所有项的列表形式
     |      D.items() -> a set-like object providing a view on D's items
     |  
     |  keys(...)    #所有的key列表
     |      >>> dic.keys()
             dict_keys(['age', 'name']) 
    
     |  pop(...)   #删除
     |      >>> dic.pop('info')
             'girl'
     |  
     |  popitem(...)   #随机删除
     |     
     |  setdefault(...)   #如果key不存在, 则创建,如果存在,则返回已存在的值且不修改
     |      >>> dic = {'age': 22, 'name': 'lily'}
            >>> dic.setdefault('age',10)
              22
            >>> dic.setdefault('info','girl')
             'girl'
            >>> dic
              {'age': 22, 'name': 'lily', 'info': 'girl'}
     |  
     |  values(...)  #所有的value列表
     |     >>> dic.values()
            dict_values([22, 'lily'])
    
     |  update(...)   #把dic2更新到dic里面去
    >>> dic =  {'name': 'lily', 'age': 22}
    >>> dic.update({'gender':'girl'})
    >>> dic
    {'name': 'lily', 'age': 22, 'gender': 'girl'}
       

 itervalues()方法

迭代字典的value     values()  itervalues()方法

迭代字典的k,v     items()  iteritems()

d = { 'Adam': 95, 'Lisa': 85}
print d.values()
# [85, 95]    #values()把value转化成一个列表
for v in d.values():
    print v
85
95

dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样:
print d.itervalues()
# <dictionary-valueiterator object at 0x106adbb50>
for v in d.itervalues():
    print v
85
95
说明: values() 方法实际上把一个 dict 转换成了包含 value 的list。
但是 itervalues() 方法不会转换,所以 itervalues() 方法比 values()方法节省了生成 list 所需的内存


统计列表里面不同值的个数

>>> l=['a','a','b','b','c']
>>> d={}
>>> for i in l:
...     d.setdefault(i,0)
...     d[i] += 1
... 
0
1
0
1
0
>>> d
{'a': 2, 'b': 2, 'c': 1}
'''
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
'''
menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车站': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}
curr_menu = menu
m_list = []
while True:
    for i in curr_menu:   # 列出一级目录
        print(i)
    menu1 = input(">>>")
    if menu1 in curr_menu:     #输入目录名时,进入二级目录
        m_list.append(curr_menu)   # 将此目录的二级所有信息存入m_list,循环..依次存入三级,四级..
        #print("curr_menu:",curr_menu)
        curr_menu = curr_menu[menu1]   #将二级目录变为一级目录
    elif  menu1 == 'f':          # 输入f 时,返回上一级目录
        if len(m_list) != 0:   
            curr_menu = m_list.pop()
        else:
            print("已到达顶级目录,按q可退出")
    elif menu1 == "q":      # 输入q时,直接退出程序
        print("程序退出")
        break
    else:        #否则,提示
        print("您的输入不正确,请重新输入")
三级菜单作业
原文地址:https://www.cnblogs.com/xiaobaozi-95/p/8718518.html