• Python-字典


    一、字典的定义

      字典和列表一样是可变的容器模型,且可存储任意类型的对象,字典是每个键值对应一个值,对应之间用冒号(:)分割,每个对象之间用(,)分割,整个字典包括在{}中;字典和列表不同,字典的键是唯一的,但值则不必;值可以取任何数据类型,但键值必须是不可变的,如字符串、数字或者元组。

     字典的定义  

    dict = {"name":"Alex","Age":18}
    print (dict)
    输出:
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {'Age': 18, 'name': 'Alex'}

    二、字典的特性

    字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

    两个重要的点需要记住: 

    1、不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

    例:

    dict = {"name":"Alex","Age":18,"wage":30000,"Class":"16期","name":"huige"}        #我们定义了两个name,结果记住的只有最后面的那个值
    print(dict)     #打印输出
    #我们看输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {'Class': '16期', 'wage': 30000, 'name': 'huige', 'Age': 18}

    2、字典的键值不能用列表充当,因为键值是不可变的,所以只能用数字、字符串、元组来充当

    例:

    dict = {"name":"Alex",8:18,"wage":30000,"Class":"16期",("name"):"huige"}
    print(dict)
    dict1 = {["name"]:"huige","hh":5000}     #键值有列表
    print(dict1)
    #看下面报错
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {8: 18, 'name': 'huige', 'wage': 30000, 'Class': '16期'}          #第一个字典打印出来了
    Traceback (most recent call last):
      File "D:/linux/python/all_test/listandtup.py", line 28, in <module>
        dict1 = {["name"]:"huige","hh":5000}                                          #第二个字典报错
    TypeError: unhashable type: 'list'

    三、字典的操作

      1、字典的访问

      例子:

    dict = {"name":"Alex","Age":18,"wage":30000}
    print (dict)
    print(dict["name"])     #访问字典的name 会输出name 的值
    输出:
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {'Age': 18, 'name': 'Alex', 'wage': 30000}
    Alex

    2、字典的修改

    dict = {"name":"Alex","Age":18,"wage":30000}
    dict["Age"] = 16 #更改年龄为16岁
    dict["School"] = "老男孩教育"     #新增加字典的键值
    print(dict)
    
    输出如下:
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {'wage': 30000, 'name': 'Alex', 'School': '老男孩教育', 'Age': 16}

    3、字典的删除

    dict = {"name":"Alex","Age":18,"wage":30000,"Class":"16期"}
    del dict["name"]     #删除字典的键
    print(dict)
    dict.clear()         #清空字典
    print(dict)
    dict1 = {"name":"huige","Age":16}
    print(dict1)
    del dict1           #另一种删除字典的方法,这种办法会连字典也删除 所以无法打印字典 报错
    print(dict1)
    
    输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {'Age': 18, 'wage': 30000, 'Class': '16期'}
    {}
    Traceback (most recent call last):
    {'Age': 16, 'name': 'huige'}
      File "D:/linux/python/all_test/listandtup.py", line 34, in <module>
        print(dict1)
    NameError: name 'dict1' is not defined

    四、字典的内置函数

    1、len函数

    统计字典元素的个数

    例子:

    dict = {"name":"Alex",8:18,"wage":30000,"Class":"16期",("name"):"huige"}
    print(len(dict))
    
    输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    4

    2、str函数

    输出字典可打印字符串的表示

    dict = {"name":"Alex",8:18,"wage":30000,"Class":"16期",("name"):"huige"}
    print(str(dict))
    输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {8: 18, 'wage': 30000, 'name': 'huige', 'Class': '16期'}

    3、type函数

    输出变量类型,如果变量是字典就返回字典类型

    dict = {"name":"Alex",8:18,"wage":30000,"Class":"16期",("name"):"huige"}
    print(type(dict))
    list12 = ["huige","123"]
    print(type(list12))
    输出   就是来判断类型的
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    <class 'dict'>
    <class 'list'>

    五、字典的方法

    1、clear()函数

    用于清空字典中所有元素

    例:

    dict = {"name":"Alex",8:18,"wage":30000,"Class":"16期",("name"):"huige"}
    print(dict)
    dict.clear()     #使用clear函数清空字典
    print(dict)
    输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {8: 18, 'wage': 30000, 'name': 'huige', 'Class': '16期'}
    {}        #清空后

    2、copy函数

    用于浅复制一个字典

    例子:

    dict = {"name":"Alex",8:18,"wage":30000,"Class":"16期",("name"):"huige"}
    dict1 = dict.copy()
    print("打印字典1:%s" %(dict))     #打印字典dict
    print("打印字典2:%s" %(dict1))    #打印字典dict1
    # 输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    打印字典1:{8: 18, 'name': 'huige', 'Class': '16期', 'wage': 30000}
    打印字典2:{8: 18, 'name': 'huige', 'wage': 30000, 'Class': '16期'}

    copy浅复制的特殊说明

    我们直接看例子:

    dict = {"name":"Alex","a":{"wage":30000},"Age":18}
    print(dict)
    dict1 = dict.copy()
    print(dict1)
    dict["Age"] = 16                     #改变了字典dict的年龄
    dict["a"]["wage"] = 40000            #改变了字典dict的工资值
    print("打印字典1:%s" %(dict))       
    print("打印字典2: %s" % (dict1))
    输出:
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {'Age': 18, 'name': 'Alex', 'a': {'wage': 30000}}               #字典工资值没有变
    {'Age': 18, 'name': 'Alex', 'a': {'wage': 30000}}               #字典工资值没有变
    打印字典1:{'Age': 16, 'name': 'Alex', 'a': {'wage': 40000}}     #字典1的年龄变了
    打印字典2: {'Age': 18, 'name': 'Alex', 'a': {'wage': 40000}}     #字典2的年龄没有变

    通过例子我们可以看出浅拷贝也是跟着内存走的,这里以后讲到函数了 我们再详细说明

    3、formkeys函数

    Python 字典 fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值

    语法:

    dict.fromkeys(seq[, value])) 
    例子:
    seq = ("name","age")
    dict = dict.fromkeys(seq)             #只加了键,并没有加值
    print("新字典的键:%s " % (dict))
    输出如下:
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    新字典的键:{'age': None, 'name': None}
    
    seq = ("name","age")                  #加了键和值
    dict = dict.fromkeys(seq,"huige")
    print("新字典的键:%s " % (dict))
    输出如下:
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    新字典的键:{'age': 'huige', 'name': 'huige'} 

     4、get的方法

    前面我们在定义字典的时候,就说过如果我们防问了字典里没有的键会报错,那么我们怎么预防呢?或者访问到没有的键时给起指定一个默认的值

    那么这里get的方法就用到了

    语法:dict.get(key,default=None)    #这里备注一下默认为空

    实例:

    dict = {"name":"Alex","wage":30000,"Class":"16期"}
    print(dict)
    print(dict["name"])  #字典里有的值
    #print(dict["AA"])    #字典里无的值,这里会报错
    # 输出如下:
    # C:Python35python.exe D:/linux/python/all_test/listandtup.py
    # {'wage': 30000, 'Class': '16期', 'name': 'Alex'}
    # Traceback (most recent call last):
    #   File "D:/linux/python/all_test/listandtup.py", line 62, in <module>
    #     print(dict["AA"])    #字典里无的值,这里会报错
    # KeyError: 'AA'
    # Alex
    print(dict.get("AA"))
    print(dict.get("AA","b"))
    #如下输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {'wage': 30000, 'name': 'Alex', 'Class': '16期'}
    Alex
    None          #后面没有跟值,为空
    b             #后面跟了b 输出B值

    5、in操作符

    python 字典 in 操作符用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false。

    语法: key in dict     #key是要在字典中查找的键

     例子:

    dict = {"name":"Alex","Age":18,"wage":30000,"Class":"16期"}
    if "Age" in dict:
        print("存在")
    else:
        print("键值不存在")
    if "AA" in dict:
        print("键值AA存在")
    else:
        print("键值AA不存在")
    输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    存在
    键值AA不存在

    6、items方法

    Python 字典 items() 方法以列表返回可遍历的(键, 值) 元组数组

    语法:dict.items()

    例:

    dict = {"name":"Alex","Age":18,"wage":30000,"Class":"16期"}
    print(dict.items())     #  所有的值以元组的形式现实
    输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    dict_items([('wage', 30000), ('Class', '16期'), ('Age', 18), ('name', 'Alex')])

    7、keys的方法

    Python 字典 keys() 方法以列表返回一个字典所有的键

    语法:dict.keys()

    例子:

    dict = {"name":"Alex","Age":18,"wage":30000,"Class":"16期"}
    print(dict.keys())    #输出列表所有键的值
    输出:
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    dict_keys(['name', 'Class', 'wage', 'Age'])

    8、setdefault 的方法

    Python 字典 setdefault() 方法和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值

    例子:

    dict = {"name":"Alex","Age":18,"wage":30000,"Class":"16期"}
    print ("Age 键的值为 : %s" %  dict.setdefault('Age', None))
    print ("Sex 键的值为 : %s" %  dict.setdefault('Sex', None))
    print ("新字典为:", dict)
    输出:
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    Age 键的值为 : 18
    Sex 键的值为 : None
    新字典为: {'wage': 30000, 'Sex': None, 'Class': '16期', 'Age': 18, 'name': 'Alex'}

    9、update方法

    Python 字典 update() 函数把字典dict2的键/值对更新到dict里。

    语法:dict.updata(dict2)

    例子:

    dict = {"name":"Alex","Age":18}
    dict1 = {"Class":"16期"}
    print(dict)
    dict.update(dict1)
    print(dict)
    输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    {'name': 'Alex', 'Age': 18}                             #更新前
    {'Class': '16期', 'name': 'Alex', 'Age': 18}             #更新后

    10、values 的方法

    Python 字典 values() 方法以列表返回字典中的所有值

    语法:values()方法语法

    dict = {"name":"Alex","Age":18,"wage":30000,"Class":"16期"}
    print(dict.values())       #返回字典的所有值
    输出
    C:Python35python.exe D:/linux/python/all_test/listandtup.py
    dict_values(['16期', 30000, 18, 'Alex'])

    就这样字典就这样结束了

  • 相关阅读:
    数组splice用法
    opacity 适配Ie
    直接贴页面,页面衔接处总会有一像素的间隔
    <script src='url'</script>显示问题
    弹出层
    CF789A. Anastasia and pebbles
    CF789C. Functions again
    HDU2161 Primes
    UVA11752 The Super Powers
    UVA11827 Maximum GCD
  • 原文地址:https://www.cnblogs.com/Plynn/p/6323037.html
Copyright © 2020-2023  润新知