当前位置: 首页 > news >正文

Python学习记录(3)

目录

1.嵌套

(1)列表中存储字典

(2)字典中存储列表

(3)字典中存储字典

2.命名元组(namedtuple)

(1)创建命名元组

 (2)访问命名元组的元素

3.计数器

(1)创建计数器

(2)访问元素

(3)增加计数与减少计数

(4)删除元素

(5)TopN操作


1.嵌套

Python 的列表和字典可以存储任意类型的元素,所以我们可以将字典存储在列表中,也可以将列表存储在字典中,这种操作称为嵌套。

(1)列表中存储字典

# 创建3个菜单字典,包含菜名和价格
menu1 = {'fish':40, 'pork':30, 'potato':20,'noodles':15}
menu2 = {'chicken':30, 'corn':55, 'lamb':65,'onion':12}
menu3 = {'bacon':36, 'beaf':48, 'crab':72,'eggs':7}
# 将3个菜单字典存储到列表menu_total中
menu_total = [menu1,menu2,menu3]
# 输出列表
print(menu_total)

(2)字典中存储列表

# 初始化menu菜单,里面包含配料列表
menu = {'fish':['vinegar','soy','salt'], 'pork':['sugar','wine']}
# 输出pork这道菜的配料
print('The burding of pork is:',menu['pork'])

(3)字典中存储字典

# 创建一个字典menu_sum,里面包含两个子菜单字典menu1和menu2
menu_sum = {'menu1':{'fish':40, 'pork':30, 'potato':20,'noodles':15},'menu2':{'chicken':30, 'corn':55, 'lamb':65,'onion':12}
}
# 输出menu1和menu2中的菜名和价格
print(menu_sum['menu1'])
print(menu_sum['menu2'])

2.命名元组(namedtuple)

(1)创建命名元组

命名元组的构造函数接受两个参数typename,field_names:

typename:元组的名字;
field_names:元组各个元素的名称,也就是属性名称

比如:

collections.namedtuple("Point",["x","y"])
这样就创建了一个叫做Point的命名元组类,它拥有两个属性x,y。

第二个参数["x","y"]也可以写成"x y"或者"x,y",即用空格或者逗号隔开属性名,

我们可以将其赋值给一个变量:

Point = collections.namedtuple("Point","x,y")
p = collections.namedtuple("Point","x,y") #变量名不一定要和第一个参数相同
以上得到的变量Point或者p并不直接是一个元组对象,它只是一个类,如果要创建它的实例,则需要像创建类实例一样调用它:

p1 = Point(x = 0, y = 0)
p2 = p(x = 1, y = 1)
这样就创建了两个实例p1,p2,他们的内容分别是x = 0,y = 0,x = 1,y = 1。

 (2)访问命名元组的元素

通过索引访问元素

print(p1[0])
print(p1[1])

当然,命名元组也可以通过属性访问:

print(p2.x)
print(p2.y)

修改元素
如果需要修改元组的元素,则不能简单的使用p1.x = 1,需要调用成员函数_replace(),它会返回一个包含新值的新实例,比如:

p1 = p1._replace(x = 1) #将p1的x值从0换到1

import collectionspoint = collections.namedtuple('point',('x','y'))
p1 = point(3,4)
print(p1)
#通过索引访问元素
print(p1[0]);print(p1[1])
#通过属性访问元素
print(p1.x);print(p1.y)
#修改元素
p1 = p1._replace(x=8)
print(p1)

3.计数器

计数器是一个无序容器,用于记录各种值出现的次数。它采用键值对的形式存储,要记录的值作为key,这个值出现的次数作为value,value值可正可负。

(1)创建计数器

import collections
#调用无参构造创建计数器
c1 = collections.Counter()
#通过可迭代对象创建计数器
c2 = collections.Counter(('a','b','c','a','a','b'))#列表
print(c2)
c3 = collections.Counter(['a','b','c','a','a'])#元组
print(c3)
c4 = collections.Counter('abcaa')#字符串
print(c4)
c5 = collections.Counter({'a':3,'b':2,'c':1})#字典
print(c5)
#指定键值对创建计数器
c6 = collections.Counter(a=3,b=2,c=1)
print(c6)

(2)访问元素

计数器是dict的子类,因此可以像使用dict那样访问计数器元素。不过与dict不同的是,当访问计数器中不存在的元素的时候,不会产生异常,而是返回0

(3)增加计数与减少计数

要改变计数器中某一元素的值,除了可以使用操作dict的方式:c.a = XXX外,计数器还提供了两个成员函数update和substract

update函数接受一个可迭代对象,然后将这个对象中各种值出现的次数加到计数器中

subtract函数与update函数类似,不过它是从计数器中减去可迭代对象中各种值出现的次数,比如

c6 = collections.Counter(a=3,b=2,c=1)
print(c6)
c6.update('aaaabbcc')
print(c6)
c6.subtract('abc')
print(c6)
'''输出结果
Counter({'a': 3, 'b': 2, 'c': 1})
Counter({'a': 7, 'b': 4, 'c': 3})
Counter({'a': 6, 'b': 3, 'c': 2})
'''

(4)删除元素

从上面的例子可以发现,当计数器中一个元素的值减少到0时,它并不会自动从计数器中删除,如果要删除元素,可以使用del函数:

c7 = collections.Counter('abbcc')
print(c7)
del(c7['a'])
print(c7)
'''输出结果
Counter({'b': 2, 'c': 2, 'a': 1})
Counter({'b': 2, 'c': 2})
'''

(5)TopN操作

计数器还提供了一个获取出现次数最多的n个元素的成员函数most_common,它返回包含这些元素的list

c8 = collections.Counter(a=5,b=6,c=7)
#输出出现次数最多的元素
print(c8.most_common(1))
#输出出现次数最多的两个元素
print(c8.most_common(2))
#不指定参数则输出所有元素all
print(c8.most_common())
'''输出结果
[('c', 7)]
[('c', 7), ('b', 6)]
[('c', 7), ('b', 6), ('a', 5)]
'''

http://www.dtcms.com/a/404519.html

相关文章:

  • 2、CPU深度解析:从微架构到性能优化
  • 超级单页网站模板陕西企尚网络科技有限公司
  • wordpress注册目录seo如何去做优化
  • HTML5介绍(HTML5特性、HTML5功能)
  • 科技云报到:AI变革需要‘减脂增肌’
  • DuckDB docker镜像的获取和容器运行
  • 西安站企业网站设计费做哪个科目
  • 工程公司手机网站wordpress常用技巧
  • 自助建站系统个人网站云南网站建设维护
  • MySQL 复合复合查询及内置函数详解
  • transforms学习笔记
  • 企业网站管理系统软件建网站要花费多少钱
  • 沧州品牌网站建设可信网站认证不做
  • 专业长春网站建设工作室c蔡甸区城乡建设局网站
  • 缙云做网站陕西省住建厅官网
  • 网站开发php岗位职责wordpress 优酷
  • 深圳科源建设集团有限公司网站深圳建立网站公司
  • 苏州网站建设网站建设番禺大石做网站
  • 徐汇品牌网站建设怎么在网站添加paypal
  • 家居企业网站建设策划广州公司注册核名
  • 上线吧做的网站可以备案wordpress防止爬虫
  • 做网站的技术风险中国手工加工网免费供货
  • 青岛新城世纪网站建设公司网页打不开但是有网什么原因无法显示此网页
  • 网站收录免费咨询江阴公司企业网站建设
  • 有口碑的徐州网站建设张掖做网站
  • 哪里有免费网站可以看wordpress搬迁后台总跳转到老网站
  • 网站建设和空间看不到的网站
  • 怎么做专门卖二手衣服的网站邯郸微信推广平台
  • 网站制作营销型杭州工程建设网
  • 手机app与手机网站的区别免费注册个人电子邮箱