范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python其实很简单第十章字典与集合

  前面介绍的列表和元组都是有序序列,而字典与集合属于无序序列,也就是说,不能通过索引来操作元素。
  10.1 字典
  语法格式:
  dictionary= {key1 : value1, key2 : value2, key3 : value3 ,...., key n : value n }
  其中,dictionary是字典名称,key表示元素的键,value表示元素的值,键和值必须是成对的。
  如:
  >>> dict1 = { "abc": 123, 98.6: 37 }
  >>> dict1
  {"abc": 123, 98.6: 37}
  可以看出,键可以是字符串、数字或者元组,但必须是唯一的;而值可以是任何数据类型,也没有要求是唯一的。
  1、创建字典的方法
  方法一:同时给定键和值,即"关键字参数"形式。
  dictionary=dict(key1=value1,key2=value2,.....,key n=value n)
  注意:这里的key 必须符合Python标识符的命名规则。
  例:
  先使用"{}"创建字典:
  >>> dict1={1:"一",2:"二",3:"三",4:"四",5:"五"}
  >>> dict1
  {1: "一", 2: "二", 3: "三", 4: "四", 5: "五"}
  再通过"关键字参数"形式创建:
  >>> dict1=dict(1="一",2="二",3="三",4="四",5="五")
  SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
  创建不成功,原因在于key 不符合Python标识符的命名规则。前面已经介绍过,标识符不能用数字表示或者用数字打头。
  现在对键如下修改:
  >>> dict1=dict(n1="一",n2="二",n3="三",n4="四",n5="五") #在数字前加了一个字符"n"
  >>> dict1
  {"n1": "一", "n2": "二", "n3": "三", "n4": "四", "n5": "五"}
  方法二 :使用已经存在的元组和列表通过映射函数创建字典。
  格式:dictionary=dict(zip(tuplekey,listvalue))
  例:
  >>> tuplekey=("n1","n2","n3","n4","n5") #键的序列采用元组
  >>> listvalue=["一","二","三","四","五"] #值的序列采用列表
  >>> dict1=dict(zip(tuplekey,listvalue))
  >>> dict1
  {"n1": "一", "n2": "二", "n3": "三", "n4": "四", "n5": "五"}
  注意:tuple(listname)函数可以将列表转换为元组,list(tuplename)函数可以将元组转换为列表。
  2、通过键访问字典
  直接获取键的相应元素的值
  >>> dict1["n2"]
  "二"
  利用get()方法
  >>> dict1.get("n2")
  "二"
  get()方法也可以带参数,当要访问的键不存在时返回一个字符串。如:
  >>> dict1.get("n0","can"t find!") #当要查找的键不存在,返回"can"t find!"
  "can"t find!"
  3、遍历字典
  使用字典对象的items()方法可以获取字典的"键.值对"列表。
  >>> for item in dict1.items():
  print(item)
  ("n1", "一")
  ("n2", "二")
  ("n3", "三")
  ("n4", "四")
  ("n5", "五")
  也可以获取具体的每个元素的键和值,如:
  >>> for key,value in dict1.items():
  print(key,"对应的是",value)
  n1 对应的是 一
  n2 对应的是 二
  n3 对应的是 三
  n4 对应的是 四
  n5 对应的是 五
  4、添加、修改和删除字典元素
  使用下面的语句,若指定的键存在,就可以修改该元素的值;若指定的键不存在,则添加该元素。如:
  >>> dict1["n6"]="六" # 键’n6’不存在,故添加该元素
  >>> dict1
  {"n1": "一", "n2": "二", "n3": "三", "n4": "四", "n5": "五", "n6": "六"}
  >>> dict1["n4"]="肆" # 键’n4’存在,故修改该元素
  >>> dict1
  {"n1": "一", "n2": "二", "n3": "三", "n4": "肆", "n5": "五", "n6": "六"}
  5、利用推导式建立字典
  import random
  dict1={i:random.randint(1,100) for i in range(5)}
  # 生成元素的键为0到5整数,值为1到100之间的随机数
  print(dict1)
  运行结果:{0: 28, 1: 59, 2: 79, 3: 30, 4: 88}
  10.2 集合
  集合是数学中一个很重要的概念,集合具有确定性、互异性、无序性三个基本属性。在Python中,集合同样具有这三个基本属性,其中,确定性是指对象要么是集合的元素,要么不是集合的元素;互异性是指集合中的元素不能重复;无序性是指集合中的元素不分先后次序,可以随意更换位置。
  1、集合的创建
  直接使用"{}"创建
  >>> set1={"春","夏","秋","冬"}
  >>> set1
  {"秋", "春", "冬", "夏"}
  >>> set2={3,2,1,4,5}
  >>> set2
  {1, 2, 3, 4, 5}
  利用已有的列表、元组创建集合
  >>> list1=["东","南","西","北"]
  >>> set3=set(list1)
  >>> set3
  {"南", "东", "北", "西"}
  利用已有的集合建立一个"副本"
  >>> set3
  {"南", "东", "北", "西"} #set3和set4的值一样
  >>> set4=set3
  >>> set4
  {"南", "东", "北", "西"}
  >>> set4.add("中") #给set4添加元素
  >>> set4
  {"西", "中", "东", "南", "北"} # 这个好理解
  >>> set3
  {"西", "中", "东", "南", "北"} # 意想不到吧?Set3为什么会发生变化?
  再看看简单变量的情况:
  >>> a=2
  >>> b=a #是不是与前面set4=set3相似
  >>> b+=1
  >>> b
  3
  >>> a   2 #但a的值并没有发生改变   从上面集合set3、set4和简单变量a、b的值的变化情况对比,不难发现set3和set4是指向同一地址的对象,而变量a和变量b指向了不同地址,语句b=a是将a的值传递个b,并不是将a的地址传递给b。列表、元组、字典都和集合一样具有这样的性质。   所以,将set4称为set3的"副本"更为恰当。   2、添加和删除元素   >>> set3   {"南", "东", "北", "西"}   >>> set3.add("中") # 添加元素   >>> set3   {"西", "中", "东", "南", "北"} # 集合内的元素是无序的,不要纠结次序的变化   >>> set3.remove("中") # 删除元素   >>> set3   {"西", "东", "南", "北"}   3、集合运算   集合运算包括交(&)、并(|)、差(-),和数学中的集合运算是一致的。   >>> set3={"南", "东", "北", "西"}   >>> set4={"西", "中", "东", "南", "北"}   >>> set3 & set4 #取set3和set4的交集   {"西", "南", "北", "东"}   >>> set3 | set4 #取set3和set4的并集   {"中", "南", "北", "西", "东"}   >>> set3 - set4 #取set3与set4的差,即set3比set4多出来的元素   set()   >>> set4 -set3 #取set4与set3的差,即set4比set3多出来的元素   {"中"}

为拿下华为国际化首胜,任正非致电李嘉诚香港业务得仰仗您上世纪90年代,爱立信西门子阿尔卡特等公司是当时全球电信市场的霸主,而那个时候的华为连与他们同台竞技的机会都没有。随着国内交换机市场的逐步饱和,华为亟需一个向全球电信运营商证明自己华为卖车2天破3000辆!速度远超同行,任正非再露野心?华为跨界卖电动车,效果怎么样呢?根据赛力斯华为智选SF5车型两天的订单来看,华为卖车效果惊艳各界,让人深感震惊和期待!为什么呢?根据赛力斯华为智选的数据看,两天销售已突破3000辆红米K50曝光!外观设计没有期待,别处却有大升级随着时间的推移,大家可能对智能手机的新形态抱有更多的期待。去年中兴就推出了以真全面屏为主要卖点的中兴A20,虽然实际效果并不如人意,但是明显催生了用户对全面屏设计的渴望,每每有新机亿纬锂能下一个宁德时代概述公司主营业务锂电池作为新能源重要部品,正在深刻改变人类的生产和生活方式。锂电池行业处于快速发展的战略机遇期。公司的主要业务是消费电池,包括锂原电池小型锂离子电池三元圆柱电池和动美国华人教授故意向Linux提交200个安全漏洞!结果整所大学被封杀最近,Linux操作系统(从手机到主要系统server,到处都在用的操作系统)惊现的200个bug(恶意代码),让美国码农圈炸了。开发和维护Linux操作系统的技术大神GregKr思博伦与旭创科技(InnoLight)成功演示800G以太网互操作性2021年4月19日思博伦通信(伦敦证交所上市代码SPT)与旭创科技(苏州)今天宣布,两家公司成功实现了对800G光收发器的互操作性验证。此次成功验证互操作性,对于下一代高速以太网终于轮到丰田出手!bZ4X概念车全球首发早在几年前就已经出现了一波新势力品牌,到了今年,新的电动车品牌和车型更是如雨露春笋般推出。在上海车展上,电车的展位占了一大半,都是主角,似乎没出电动车就跟不上其他品牌的步伐,就连传重磅!清华大学成立芯片学院,为国家培养芯片人才众所周知,中国一直是全球芯片消耗大国,差不多全球三分之一的芯片都被中国用掉了,按照海关的数据,过去三年,国内进口芯片金额超过3000亿美元。为何进口这么多?一方面是因为中国是全球制学者百度AI车惊艳,让人担心日本起步晚恐是一场灾难现代经营4月25日刊登立教大学商学院田中道昭教授的文章,分析介绍百度无人驾驶车在日本的情况,感叹日本起步晚恐会酿成一场灾难。指出事实是,无人驾驶出租车已经在中国到处跑了!日本需要觉iPhone12紫色版开启预售了5499元起苹果推出了紫色版iPhone12和iPhone12mini,如今国行版已经开启预售了。预售已于4月23日开始,发货时间为4月30日。目前苹果官网京东均可预约,京东更是直接提供了80华为上架nova8Pro4G版,仍搭载麒麟985芯片继前段时间Mate40Pro上架4G版之后,华为官网近日又上架了nova8Pro的4G版,它同样搭载麒麟985芯片,除了不支持5G外,其余几乎与5G版完全一致。价格与开售日期暂未公