• Python之字典与集合的基本操作


    一、字典的基本操作

    1.1 空字典与字典更新

    1.1.1 添加条目 

    定义空字典即将一对空的大括号”{}“赋给字典变量。

     语法格式:字典名【键】 = 值

    1. >>> dictArea = {}
    2. >>> dictArea
    3. {}
    4. >>> dictArea['中国'] = 1200
    5. >>> dictArea['美国'] = 1100
    6. >>> dictArea['法国'] = 1000
    7. >>> dictArea
    8. {'中国': 1200, '美国': 1100, '法国': 1000}

    1.1.2 修改条目 

    语法格式:字典名【键】 = 值

    1. >>> dictArea
    2. {'中国': 1200, '美国': 1100, '法国': 1000}
    3. >>> dictArea['法国'] = 900
    4. >>> dictArea
    5. {'中国': 1200, '美国': 1100, '法国': 900}

    可以看出修改条目和添加条目是同一种操作,所以用于修改条目时,指定的键必须对应已存在的条目,否则就是添加条目。另外需要注意的是,修改条目实质上是修改与键关联的值,而具有唯一性的键是不可以被修改的。

    1.2 删除字典条目 

    删除字典条目的方法有很多,但是都是通过键来指定要删除的条目。 

     1.2.1 使用 del 命令删除指定条目

     语法格式:del 字典名【键】

    1. >>> dictArea
    2. {'中国': 1200, '美国': 1100, '法国': 900}
    3. >>> del dictArea['法国']
    4. >>> dictArea
    5. {'中国': 1200, '美国': 1100}

    1.2.2 使用 pop() 方法删除指定条目 

     语法格式:字典名.pop(键,默认值)

    1. >>> dictArea
    2. {'中国': 1200, '美国': 1100}
    3. >>> dictArea.pop('美国')
    4. 1100
    5. >>> dictArea
    6. {'中国': 1200}

    注意:使用pop()方法时,要保证删除的键在字典中存在,如果不确定是否存在时,需要给出默认值,否则会报错。另外,最少要包含一个用于指定键的参数,如果参数都缺省的话,系统会报错。 

     1.2.3 用popitem()方法随机删除字典条目

    语法格式:字典名.popitem() 

    1. >>> dictArea
    2. {'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200, '英国': 1100}
    3. >>> dictArea.popitem()
    4. ('英国', 1100)
    5. >>> dictArea
    6. {'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200}

    删除的条目是以元组的形式返回。3.6版本之后,popitem()方法默认返回最后一个添加进字典的条目。 

    1.2.4 用clear()方法清空字典条目 

     语法格式:字典名.clear()

    1. >>> dictArea
    2. {'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200}
    3. >>> dictArea.clear()
    4. >>> dictArea
    5. {}

    调用了clear()方法的字典虽然删除了所有条目,但依然是一个空字典。 

    1.2.5 直接删除整个字典 

    del 字典名 

    1. >>> dictArea
    2. {'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200, '英国': 1100}
    3. >>> del dictArea
    4. >>> dictArea
    5. Traceback (most recent call last):
    6. File "", line 1, in <module>
    7. NameError: name 'dictArea' is not defined

    1.3 查找字典条目 

     1.3.1 成员运算符 in

    语法格式:键 in 字典 

    1. >>> dictArea
    2. {'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200, '英国': 1100}
    3. >>> '中国' in dictArea
    4. True
    5. >>> '俄国' in dictArea
    6. False

    1.3.2 用 get() 方法获取条目的值 

    字典名.get(键,默认值) 

    1. >>> dictArea
    2. {'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200, '英国': 1100}
    3. >>> dictArea.get('中国')
    4. 1500
    5. >>> dictArea.get('俄国')
    6. >>>

    1.4 字典的遍历 

    1.4.1 遍历字典中所有的键

    字典有一个称为keys()的方法可以用来返回字典中的所有的键。

    1. >>> dictAreas
    2. {'中国': 1500, '美国': 1300, '英国': 1200, '法国': 1000}
    3. >>> dictAreas.keys()
    4. dict_keys(['中国', '美国', '英国', '法国'])
    5. >>> for key in dictAreas.keys():
    6. print(key)
    7. 中国
    8. 美国
    9. 英国
    10. 法国
    11. >>> for key in dictAreas.keys():
    12. print(key,dictAreas[key])
    13. 中国 1500
    14. 美国 1300
    15. 英国 1200
    16. 法国 1000

     1.4.2 遍历字典中所有的值

    字典中也提供了一个用来返回所有值的方法values();

    1. >>> dictAreas
    2. {'中国': 1500, '美国': 1300, '英国': 1200, '法国': 1000}
    3. >>> dictAreas.values()
    4. dict_values([1500, 1300, 1200, 1000])
    5. >>> for value in dictAreas.values():
    6. print(value)
    7. 1500
    8. 1300
    9. 1200
    10. 1000

      1.4.3 遍历字典中所有的条目 

    字典的items()方法能以(键,值)的形式返回所有条目;

    1. >>> dictAreas
    2. {'中国': 1500, '美国': 1300, '英国': 1200, '法国': 1000}
    3. >>> dictAreas.items()
    4. dict_items([('中国', 1500), ('美国', 1300), ('英国', 1200), ('法国', 1000)])
    5. >>> for item in dictAreas.items():
    6. print(item)
    7. ('中国', 1500)
    8. ('美国', 1300)
    9. ('英国', 1200)
    10. ('法国', 1000)

    1.5 字典的排序 

    字典里的条目是没有顺序的,严格来说,字典是不支持排序的,我们只能将字典中的条目按照我们希望的顺序进行显示。

    由于中文的排序涉及到编码的问题,所以将键改为英文。

    1. >>> dictArea
    2. {'China': 1500, 'Russia': 1300, 'Canada': 1200}
    3. >>> sorted(dictArea)
    4. ['Canada', 'China', 'Russia']
    5. >>> dictArea
    6. {'China': 1500, 'Russia': 1300, 'Canada': 1200}
    7. >>> ls = sorted(dictArea)
    8. >>> ls
    9. ['Canada', 'China', 'Russia']
    10. >>> for country in ls:
    11. print(country,dictArea[country])
    12. Canada 1200
    13. China 1500
    14. Russia 1300

    1.6 字典的合并 

    1.6.1 使用for循环

    1. >>> dictArea1
    2. {'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
    3. >>> dictArea2
    4. {'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
    5. >>> for k,v in dictArea2.items():
    6. dictArea1[k] = v
    7. >>> dictArea1
    8. {'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000, '张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
    9. >>> dictArea2
    10. {'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}

     1.6.2 使字典的update()方法

    update()是字典的方法,用来将参数字典添加到调用方法的字典中。

    语法格式:字典名.update(参数字典名) 

    1. >>> dictArea1
    2. {'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
    3. >>> dictArea2
    4. {'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
    5. >>> dictArea1.update(dictArea2)
    6. >>> dictArea1
    7. {'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000, '张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
    8. >>> dictArea2
    9. {'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}

      1.6.3 使用dict()函数 

    1. >>> dictArea1
    2. {'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
    3. >>> dictArea2
    4. {'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
    5. >>> ls = list(dictArea1.items()) + list(dictArea2.items())
    6. >>> ls
    7. [('中国', 1500), ('法国', 1300), ('美国', 1200), ('英国', 1000), ('张三', 1100), ('李四', 1000), ('王五', 900), ('小阿丁', 500)]
    8. >>> dictArea = dict(ls)
    9. >>> dictArea
    10. {'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000, '张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
    11. >>> dictArea1
    12. {'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
    13. >>> dictArea2
    14. {'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}

      1.6.4 使用dict()函数的另一种形式  

    1. >>> dictArea1
    2. {'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
    3. >>> dictArea2
    4. {'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
    5. >>> dictArea1 = dict(dictArea1,**dictArea2)
    6. >>> dictArea1
    7. {'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000, '张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
    8. >>> dictArea2
    9. {'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}

    注意:一般来说,参加合并的两个字典中的键都是不同的,如果两个字典中出现了相同的键,那么合并后只会有一组包含改键的条目被保留下来。

    二、集合的基本操作 

     2.1 添加元素

     函数或方法:s,add(item) 或者s.update(item)

    区别:s.add(item)将参数item作为元素添加到集合s中,如果item是序列,则将其作为一个元素整体加入集合。作为参数的item只能是不可变的数据。

    s.update(item)将参数序列item中的元素拆分去重后加入集合。参数item可以是可变数据。

    1. >>> s = {1,2,3}
    2. >>> s.add((2,3,4))
    3. >>> s
    4. {1, 2, 3, (2, 3, 4)}
    5. >>> s.add([2,3,4])
    6. Traceback (most recent call last):
    7. File "", line 1, in <module>
    8. TypeError: unhashable type: 'list'
    1. >>> s = {1,2,3}
    2. >>> s.update([2,3,4])
    3. >>> s
    4. {1, 2, 3, 4}

     2.2 删除元素 

     函数或方法:s.remove(item) 或 s.discard(item) 或 s.pop() 或 s.clear()

    1. >>> s = {1,2,3,4}
    2. >>> s.remove(2)
    3. >>> s
    4. {1, 3, 4}
    5. >>> s.remove(5)
    6. Traceback (most recent call last):
    7. File "", line 1, in <module>
    8. KeyError: 5
    1. >>> s = {1,2,3,4}
    2. >>> s.discard(3)
    3. >>> s
    4. {1, 2, 4}
    5. >>> s.discard(5)
    6. >>>
    1. >>> s = {1,2,3,4}
    2. >>> s.pop() //随机删除
    3. 1
    1. >>> s = {1,2,3,4}
    2. >>> s.clear()
    3. >>> s
    4. set()

      2.3 成员判断 

    语法格式:item in s 

     2.4 集合的数学运算  

    2.4.1 求并集 

     运算符:A | B  

    方法:A。union(B)

    1. >>> A = {1,2,3,4}
    2. >>> B = {3,4,5,6}
    3. >>> A|B
    4. {1, 2, 3, 4, 5, 6}
    5. >>> A
    6. {1, 2, 3, 4}
    7. >>> B
    8. {3, 4, 5, 6}
    9. >>> A.union(B)
    10. {1, 2, 3, 4, 5, 6}
    11. >>> B
    12. {3, 4, 5, 6}

     2.4.2 求交集 

    运算符:A & B

    方法:A。intersection(B) 

    1. >>> A
    2. {1, 2, 3, 4}
    3. >>> B
    4. {3, 4, 5, 6}
    5. >>> A & B
    6. {3, 4}
    7. >>> A
    8. {1, 2, 3, 4}
    9. >>> B
    10. {3, 4, 5, 6}
    11. >>> A.intersection(B)
    12. {3, 4}

      2.4.3 求差集 

    运算符:A - B

    方法:A.difference(B)  

    1. >>> A
    2. {1, 2, 3, 4}
    3. >>> B
    4. {3, 4, 5, 6}
    5. >>> A - B
    6. {1, 2}
    7. >>> A
    8. {1, 2, 3, 4}
    9. >>> B
    10. {3, 4, 5, 6}

       2.4.4 求对称差集 

     运算符:A ^ B

    方法:A.symmetric_difference(B)

    1. >>> A
    2. {1, 2, 3, 4}
    3. >>> B
    4. {3, 4, 5, 6}
    5. >>> A.symmetric_difference(B)
    6. {1, 2, 5, 6}
    7. >>> A
    8. {1, 2, 3, 4}
    9. >>> B
    10. {3, 4, 5, 6}

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    一文精通HashMap灵魂七问,你学还是不学
    华为数通方向HCIP-DataCom H12-831题库(单选题:81-100)
    2022-04-10-Docker
    美团分布式 ID 框架 Leaf 介绍和使用
    【Python3】Python程序结构
    Python正则表达式
    OrangePi AIpro 浅上手
    NX二次开发-调用Everything SDK基于名称快速定位文件和文件夹
    Dubbo基本原理机制
    Hive笔记
  • 原文地址:https://blog.csdn.net/m0_51769031/article/details/127476677