想必大家都有查字典的经历吧,让我们再回顾一下查字典的步骤:根据拼音或者边旁找到这个字,然后翻到这个字对应的页数,就能看到这个字的详细解释啦。

Python字典(dict)其实也是差不多的概念,在字典(dict)中存的,其实也是个数据集合,由一组组键值对组成(key -> value)。接下来我们看个小栗子:

dict_1 = {"key1": 100, "key2": 200, "key3": 300}print(dict_1) # 这里输出:{'key1': 100, 'key2': 200, 'key3': 300}print(dict_1["key2"]) # 这里输出:200

这里可以看到字典(dict)的定义和使用还是挺简单的,感觉跟列表(list)有点像诶,只不过列表(list)用的是索引,而且必须是数字0开始,字典(dict)就有点随意了。其中有一个注意点,字典(dict)的key是不能重复的,如果重复的话,后面的value会把前面的覆盖掉,来看看栗子:

dict_2 = {"key1": 100, "key2": 200, "key3": 300, "key2": 400}print(dict_2) # 这里输出:{'key1': 100, 'key2': 400, 'key3': 300}

如果想修改key里面的值怎么办呢?好办,还是上面的dict_2:

dict_2["key3"] = 500print(dict_2) # 这里输出:{'key1': 100, 'key2': 400, 'key3': 500}

如果想要删掉其中的一个key怎么办呢?这里用到了一个关键字del:

del dict_2["key1"]print(dict_2) # 这里输出:{'key2': 400, 'key3': 500}

是不是很好用,就像在写英语一样。

同样的,Python也为字典(dict)内置了一些非常有用的函数,我们来看两个。如果你想复制一个字典(dict)怎么办呢?让我们试试:

dict_2 = {"key1": 100, "key2": 200, "key3": 300}dict_3 = dict_2print(dict_2) # 这里输出:{'key1': 100, 'key2': 200, 'key3': 300}print(dict_3) # 这里输出:{'key1': 100, 'key2': 200, 'key3': 300}dict_2["key2"] = 600print(dict_2) # 这里输出:{'key1': 100, 'key2': 600, 'key3': 300}print(dict_3) # 这里输出:{'key1': 100, 'key2': 600, 'key3': 300}

注意到了吗,我修改了dict_2的值后,dict_3的key2的值也被改了。这是为什么呢?原因是dict_3 = dict_2这个语句,做的动作是把dict_2的地址赋给了dict_3,就像开了一张银行卡,同时也开了一张副卡,两张卡的账户其实是同一个,用主卡取了100块钱后,副卡看到的金额是取完钱之后的余额。同样的,如果是副卡取了100块钱后,主卡看到的金额也是取完钱之后的余额。

那如果我想复制一个字典(dict),两个完全独立互不影响怎么办呢?这时我们的copy()函数就该上场了

dict_2 = {"key1": 100, "key2": 200, "key3": 300}dict_3 = dict_2.copy()print(dict_2) # 这里输出:{'key1': 100, 'key2': 200, 'key3': 300}print(dict_3) # 这里输出:{'key1': 100, 'key2': 200, 'key3': 300}dict_2["key2"] = 600print(dict_2) # 这里输出:{'key1': 100, 'key2': 600, 'key3': 300}print(dict_3) # 这里输出:{'key1': 100, 'key2': 200, 'key3': 300}

dict_2后面加上copy(),就完美解决了上面的问题。

再来看一个keys()函数,它会以列表形式返回了字典的所有key,这个列表的类型是dict_keys,使用时强制转换一下就行:

dict_2 = {"key1": 100, "key2": 200, "key3": 300}print(type(dict_2.keys())) # 这里输出:'dict_keys'>print(list(dict_2.keys())) # 这里输出:['key1', 'key2', 'key3']

字典(dict)就先讲解到这里,更多内置方法可以参考官方文档。下面简单讲解一下集合(set),集合(set)有点像字典(dict)的keys列表,里面的值不允许重复,它的定义方式如下:

set_1 = {"apple", "orange", "melon", "orange"}print(set_1) # 这里输出:{'apple', 'orange', 'melon'}

注意到了吗,orange出现了2次,但输出的时候,第二个orange没了,这就是集合(set)的特点。它的方法我感觉和列表(list)非常类似,就不再赘述了。同学可以自己敲一遍代码试试。

我们再来复习一下吧,由中括号[]定义的,是列表(list);由小括号()定义的,是元组(tuple);由大括号{}定义的,是集合(set);下次就会讲解到判断语句了,加油。

python set集合_Python字典(dict)和集合(set)相关推荐

  1. python集合set底层原理_Python进阶11_字典dict和集合set的秘密

    本节你将看到关于字典dict和集合set更加深入的原理,尤其是关于散列在其中的作用,将回答以下问题:Python 里的 dict 和 set 的效率有多高? 为什么它们是无序的? 为什么并不是所有的 ...

  2. Python for循环遍历字典(dict)的方法

    本文主要Python中,Python2.x和Python3.x分别使用for循环遍历字典(dict)的方法,以及相关的示例代码. 原文地址:Python for循环遍历字典(dict)的方法

  3. python中的字典和集合_Python 字典和集合

    字典的每个键值对用冒号分割,键值对之间用逗号分隔,所有键值对包括在{}中. d = {key1 : value1, key2 : value2 } 键必须是唯一的,值可以不唯一.值可以取任何数据类型, ...

  4. Python:六、字典dict,元组tuple与集合set的使用

    一.字典dict[重要] 1.1 字典概念 语法: {键1: 值1, 键2: 值2, 键3: 值3, -, 键n: 值n} 说明:键值对: key-value 字典和列表类似,都可以用来存储多个数据 ...

  5. Python-基础知识-字典dict和集合set

    字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 如果用dict实现,只需要一个&q ...

  6. python dict排序_python 字典(dict)按键和值排序

    python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行: 1 下面的是按照value的值从大到小的顺序来排序 ...

  7. python创建一个空集合_Python中如何创建集合

    #创作者招募令# 第六十七节:创建集合 集合作为序列形式的一种,在Python中也有应用. 先来看看集合在数学中的定义:集合(aggregate)是"确定的一堆东西",集合里的&q ...

  8. 6.组合数据类型(列表list,元组tuple,集合set,字典dict)

    1.数据类型概述 ① 工程项目中根据数据类型的特点,将python中的数据类型,区分为基本数据类型.组合数据类型以及复杂数据类型: 基本数据类型中又区分为字符串str类型,用来描述信息:整数类型int ...

  9. python创建一个集合_python如何创建一个集合

    创建集合 创建集合可以使用大括号{}来创建,元素间用逗号分隔,但是不能用它来创建空集合,因为{}创建的是空字典.如 set1 = {1,2,3} 也可以使用set()函数来创建集合,其中的参数为可迭代 ...

最新文章

  1. python使用matplotlib可视化、使用matplotlib可视化scipy.misc图像、自定义使用winter色彩映射、将不同亮度映射到不同的色彩
  2. ubuntu16.04+cuda7.5
  3. mysql sp cursoropen_三个重要的游标sp_cursoropen_MySQL
  4. 为什么加了@Transactional注解,事务没有回滚?
  5. 网络工程师技能图谱 | 网络技术的理论知识和操作技能
  6. android 字符串相似度对比,Android中的OpenCV图像比较和相似度
  7. 简明 Python 教程学习笔记_2_函数
  8. c语言创建json串,Jquery通过JSON字符串创建JSON对象
  9. CCF NOI1057 石头剪刀布
  10. 对广州链家网二手房数据进行分析
  11. 网站账号中密码的加密方式
  12. java垃圾回收策论,share_doucument/jvm的垃圾回收策略.md at develop · LiuLei0571/share_doucument · GitHub...
  13. uniapp数组已经更新到data页面不实时渲染问题
  14. python基础训练—元组
  15. c语言编写 构成的梯形,用C语言编写梯形
  16. AppStore隐私政策网址(URL)
  17. 好文分享 努力从何时开始都不晚 跟自己比 不断进步
  18. Java代码实现SMS短信发送功能
  19. 探索微观宇宙超级计算机系统,人类可以制造出计算机,为何却制造不出细胞?细胞是微观宇宙?...
  20. 科研论文绘图实操干货汇总,11类Matplotlib图表,含代码

热门文章

  1. PL/Sql 中创建、调试、调用存储过程
  2. 深夜,在这个已不再喧嚣的城市中寻找到一片属于自己的宁静,仰望那片属于自己的星空……...
  3. 错误率_研究发现,商业语音识别系统存在高错误率
  4. ZZULIOJ 1112: 进制转换(函数专题)
  5. ZZULIOJ 1104: 求因子和(函数专题)
  6. 信息学奥赛一本通 1053:最大数输出 | OpenJudge NOI 1.4 15
  7. 信息奥赛一本通(1839:【05NOIP提高组】谁拿了最多奖学金)
  8. 最小生成树计数(HYSBZ-1016)(加强版实现)
  9. 计数问题(洛谷-P1980)
  10. 4.4.5 清除变量内容