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

    字典是无序的,字典是key-value结构,一个键对应一个值,key必须可hash,必须是唯一的,并且不可以变,value可以取任何数据类型,如字符串,数字或元组,可以是不唯一的

    定义一个字典

    >>> info = {'name':'John','age':22,'sex':'male'}
    >>> info
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info_1 = dict({'name':'Jane','age':25,'sex':'female'})
    >>> info_1
    {'name': 'Jane', 'sex': 'female', 'age': 25}
    >>> info_2 = dict(name='Jack',age=23,sex='male')
    >>> info_2
    {'name': 'Jack', 'sex': 'male', 'age': 23}
    >>> info_3 = dict((['name','Andy'],['age',18],['sex','male']))
    >>> info_3
    {'name': 'Andy', 'sex': 'male', 'age': 18}
    >>> info_4 = {}.fromkeys(['name','age','sex'],'test') # 三个key都被赋值了同一个value
    >>> info_4
    {'name': 'test', 'sex': 'test', 'age': 'test'}
    

     获取字典中键值的情况

    >>> info
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info.keys() # 获取字典中的所有key
    dict_keys(['name', 'sex', 'age'])
    >>> info.values() # 获取字典中所有的value
    dict_values(['John', 'male', 22])
    >>> info.items() # 获取字典中所有的键值对
    dict_items([('name', 'John'), ('sex', 'male'), ('age', 22)])
    

     获取字典的长度,即键值对的个数

    >>> info
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> len(info)
    3
    

     添加字典的键值对

    >>> info
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info['Nationality'] = 'China' # 直接通过新的键值对来添加
    >>> info
    {'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
    >>> info.setdefault('age', 12) # 如果key存在的话就不会添加
    22
    >>> info
    {'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
    >>> info.setdefault('Language', 'Chinese') # 如果key不存在的话,会添加一个新的键值对
    'Chinese'
    >>> info
    {'Language': 'Chinese', 'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
    

     获取字典中的value

    >>> info
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info['name']  # 直接通过key查看对应的value
    'John'
    >>> info.get('age')  # 通过get方法来获取对应的value值
    22
    >>> info.get('age1',"Can't find age1")  # 如果get方法中的key不存在,就会返回设定的默认值
    "Can't find age1"
    

     修改字典中key的value值

    >>> info
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info['sex'] = 'female'
    >>> info
    {'name': 'John', 'sex': 'female', 'age': 22}
    

     把一个字典的内容添加到另一个字典里

    >>> info
    {'name': 'John', 'sex': 'female', 'age': 22}
    >>> info1
    {'Nationality': 'China', 'Language': 'Chinese'}
    >>> info.update(info1)  # 把info1字典里的内容添加到info里
    >>> info
    {'name': 'John', 'sex': 'female', 'Nationality': 'China', 'Language': 'Chinese', 'age': 22}
    

     字典的删除操作

    >>> info
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info.pop('sex')  # 使用pop方法通过key删除
    'male'
    >>> info.pop('age1',"Can't find age1")  # 如果没有key的话,就返回设定的默认值
    "Can't find age1"
    >>> del info['age']  # 直接用del删除
    >>> info
    {'name': 'John'}
    
    >>> info = {'name':'John','age':22,'sex':'male'}
    >>> info.popitem()  # 随机删除字典中的一个键值对
    ('name', 'John')
    >>> info.popitem()
    ('sex', 'male')
    >>> info.popitem()
    ('age', 22)
    >>> info.popitem()  # 如果字典为空,使用popitem方法就会报错
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'popitem(): dictionary is empty'
    
    >>> info = {'name':'John','age':22,'sex':'male'}
    >>> info.clear()  # 清空字典中所有的键值对
    >>> info
    {}
    

     字典的复制

    >>> info
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info_1 = info  # 通过赋值来复制,如果原字典发生改变,复制的字典也会发生改变
    >>> info_1
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info['Nationality'] = 'China'
    >>> info
    {'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
    >>> info_1
    {'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
    
    >>> info
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info_1 = info.copy()  # 深度copy,原字典发生改变,复制的字典不会发生改变,两个字典变得没有关系了
    >>> info_1
    {'name': 'John', 'sex': 'male', 'age': 22}
    >>> info['Nationality'] = 'China'
    >>> info
    {'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
    >>> info_1
    {'name': 'John', 'sex': 'male', 'age': 22}
    
  • 相关阅读:
    k8S 搭建集群
    K8S搭建
    华为交换机常用命令
    JSP中动态include和静态include的区别
    什么情况下调用doGet()和doPost()
    get和post的区别
    什么是spring框架
    spring的作用
    什么是DI
    依赖注入的三种实现方式
  • 原文地址:https://www.cnblogs.com/sch01ar/p/8544511.html
Copyright © 2011-2022 走看看