zoukankan      html  css  js  c++  java
  • Python字典

    Python的字典是一种Key-value的数据类型,和js的数据格式一样。

    字典的定义

    name = {
    'name':'zhangshan',
    'age':23,
    'address':'beijing',
    54:'asd',
    'address':'hebei'
    }
    print(name)#{'name': 'zhangshan', 54: 'asd', 'address': 'hebei', 'age': 23

    1、打印的结果和我定义字典的顺序不一样,说明字典是无序的。

    2、定义了两个'address' 最后定义的把之前的覆盖了 说明字典的key是唯一的。

    字典的添加

    dict[key] = value

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
        54:'asd',
        'address':'hebei'
    }
    name['phone']='789456'
    print(name)#{'phone': '789456', 'age': 23, 'name': 'zhangshan', 'address': 'hebei', 54: 'asd'}
    

     字典的删除

    pop(key) 删除指定的key

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    name.pop('age')
    print(name)#{'name': 'zhangshan', 'address': 'beijing'}
    

     字典的修改

    dict[key] = new_value

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    name['name'] = 'lisi'
    print(name)#{'age': 23, 'name': 'lisi', 'address': 'beijing'}
    

     字典的查找

    1 dict[key]

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    print(name['name'])#zhangshan
    

     这种方法不是很好,如果查一个不存在的key会报错。

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    print(name['idcode'])
    

     

    2 get(key) 如果有了就返回 没有了就是none

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    print(name.get('idcode'))#None
    

     3 in 判断这个key是不是在字典中 结果是布尔值

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    print('idcode' in name)#False
    print('address' in name)#True
    

    其它操作

    values() 打印所有的value 返回一个列表。

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    print(name.values())#dict_values([23, 'zhangshan', 'beijing'])
    

    keys() 打印所有的key 返回一个列表。

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    print(name.keys())#dict_keys(['age', 'address', 'name'])
    

     setdefault(key,value)  先查字典,如果能查到有这个key就返回,没有就创建一个新的key,赋值value。

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    name.setdefault('phone','789456')
    name.setdefault('age',25)
    print(name)#{'phone': '789456', 'age': 23, 'name': 'zhangshan', 'address': 'beijing'}
    

    update(dict) 两个字典合并,相同的元素覆盖。

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    name2 = {
        'name':'lisi',
        'phone':'456456',
        'car':'SKODA'
    }
    name.update(name2)
    print(name)#{'age': 23, 'phone': '456456', 'name': 'lisi', 'car': 'SKODA', 'address': 'beijing'}
    

     items() 字典转列表,每一组key-value 转成元组,key作为元组的第一个值,value作为元组的第二个值。

    name2 = {
        'name':'lisi',
        'phone':'456456',
        'car':'SKODA'
    }
    
    print(name2.items())#dict_items([('phone', '456456'), ('car', 'SKODA'), ('name', 'lisi')])
    

     如果是字典嵌套

    name2 = {
        'name':'lisi',
        'phone':'456456',
        'car':'SKODA',
        'child':{
            'key_1':1
        }
    }
    
    print(name2.items())#dict_items([('car', 'SKODA'), ('child', {'key_1': 1}), ('name', 'lisi'), ('phone', '456456')])
    

    可以看到, 嵌套的字典并没有转成元组。

    循环

    1、简单的for循环

    name = {
        'name':'zhangshan',
        'age':23,
        'address':'beijing',
    }
    
    for i in name:
        print(i,name[i])
    #####################
    name zhangshan
    age 23
    address beijing
    

    2、items() 转列表循环

    for key,value in name.items():
        print(key,value )
    
    #######################
    address beijing
    name zhangshan
    age 23
    

     如果数据量很大的话,转列表的操作会很低效。

    字典生成式

    Python2.6写法:

    print(dict((v,k) for k,v in count.items()))#{2: 3, 5: 9}
    

    Python2.7或3:

    print({v:k for k,v in count.items()})#{2: 3, 5: 9}
    

     Python2.7或3兼容以上写法。

    列表生成字典

    list=['pc','99','hello']
    print(dict((k,v) for k,v in enumerate(list)))#{0: 'pc', 1: '99', 2: 'hello'}#2.6写法
    print({k:v for k,v in enumerate(list)})#{0: 'pc', 1: '99', 2: 'hello'}#2.7及以上
    

     如果把k,v调换位置可以实现字典的反转 v:k

    demo:

    把列表中的每一项的id的值作为key,name作为value

    re = [{'id':1,"name":"wd",'age':18},{"id":2,"name":"pc","age":20}]
    
    print(dict(((str(x['id'])),x['name'])for x in re))#{'2': 'pc', '1': 'wd'}
    
    print( {(str(x['id'])):x['name'] for x in re} )#{'2': 'pc', '1': 'wd'}
    
  • 相关阅读:
    C#面向对象编程进阶(一) ——实现栈
    Hibernate组件和关联映射
    创建多线程的两种方法
    Mybatis:ResultMap
    Mybatis:配置解析
    IDEA复制多行及对多行代码上下左右移动
    Mybatis:CRUD操作
    Mybatis简介
    算法分类 ,时间复杂度 ,空间复杂度,优化算法
    JAVA LOG4J使用方法
  • 原文地址:https://www.cnblogs.com/qing-chen/p/7196042.html
Copyright © 2011-2022 走看看