字典
python中的字典(dict),来源于生活中的目录。它的主要特征,不是根据位置来访问数据,而是根据一个预先约定好的关键字(key)来访问指定数据(value),键和值使用“key : value”的方式来保存,可以称之为键值对。就像小学用的字典一样,根据拼音或部首找到这个字对应的页面,这儿的“字”就是key,对应页面上的内容就是value。
字典中的key不能包含重复元素,但值可以,字典中的数据不是按照添加的顺序来存放,所以不能根据索引来访问,它更适用于通过某个关键字来快速访问数据的场合。
示例一:保存四个好友的信息。
friends = {101 : '老王', 102 : '二胖', 103 : 'jack马', 104 : '十方上下'}
示例二:保存两个好友的信息,分别设定 'xm' 和 '2p' 快速定位到对应好友。
friends = {'xm' : ['jack马', '13800138000', 48, '武汉市xx街26号'] ,'2p' : ['二胖', '13800000000', 36, '北京市长安街101号']}
我们同样设计几个需求来学习字典如何使用。
# 1.创建一个字典,保存“自选股”stockList = {'603477' : ['振静股份',13.72],'600876' : ['洛阳玻璃', 12.65], '300792' : ['壹网壹创', 183.95], '002800' : ['天顺股份', 28.81]}# 2.查看'300792'的详细信息print(stockList['300792'])# 3.查看所有“自选股”的详细信息for k,v in stockList.items():print(k, ":", v) # 4. 添加一只票'002552'及相关的详细信息stockList['002552'] = ['宝鼎科技', 17.48]print(stockList)# 5. 修改'603477'的价格为21stockList['603477'][1] = 21print(stockList['603477'])# 6.从“自选股”中删除'002800'del stockList['002800']print(stockList)
结果:
元组
元组与列表类似,其中的数据有序、可以重复,通过索引访问数据。其与列表最大的区别在于它不可变,也就是说元组一旦创建,就不能再修改。元组的访问操作与列表完全相同,这儿就不再演示。这儿来说说遍历时for循环的用法。
示例:遍历“自选股”中的所有票(~换成空格)
stockList = ('603477', '600876', '300792', '002800')
# 第一种方式
for stock in stockList :print(stock)
# 第二种方式
for i, stock in enumerate(stockList):print('{0}:{1}'.format(i, stock))
第一种方式表示通过遍历,按顺序取出每一个数据。但有的时候我们希望在取出数据的时候知道它对应的索引,这时就可以使用第二种方式,i对应数据的索引,stock对应数据。
集合
集合的特征是元素无序(不是按添加的先后顺序排列)、无重复数据。我们经常把列表中的数据放入集合来去重。
示例一:创建集合
stockList = {'603477', '600876', '300792', '002800','002800'}
print(stockList)
在上面示例中添加两次'002800',看看显示是什么样的。
示例二:创建一个空集合
stockList = set() # 使用set函数创建空集合
示例三:添加和删除数据
# add(data):添加数据,如果数据已存在,则不会添加
# remove(data):删除元素,如果元素不存在会报错
# discard(data):删除元素,如果元素不存在不会报错
# clear():清空集合
stockList = {'603477', '600876', '300792', '002800'}
stockList.add('002552') # 添加数据
stockList.remove('600876') # 删除数据
stockList.discard('300792') # 删除数据
stockList.remove('300792') # 删除的数据不存在,报错
stock.clear()
示例四:遍历集合
stockList = {'603477', '600876', '300792', '002800'}
# 第一种方式
for stock in stockList :print(stock)
# 第二种方式
for i, stock in enumerate(stockList):print(“{0}:{1}”.format(I, stock))
注意第二种方式中,这儿的i表示的是循环次数,而不是索引,因为集合是无序的,不能根据索引来访问数据。