Python基础知识-05-数据类型总结字典

 

python其他知识目录

 

1、一道题,选择商品的序号。程序员和用户各自面对的序号起始值

如有变量 googs = ['汽车','飞机','火箭'] 提示用户可供选择的商品:

0,汽车
1,飞机
2,火箭
用户输入索引后,将指定商品的内容拼接打印,如:用户输入0,则打印 您选择的商品是汽车。

goods=["汽车","飞机","大炮"]
for i in range(0,len(goods)):print(i,goods[i])
num=input("请输入要选择的商品序号:")
num=int(num)
text="您选择的产品是:%s"%(goods[num])
print(text)
-------------结果:
0 汽车
1 飞机
2 大炮
请输入要选择的商品序号:0
您选择的产品是:汽车

变形:
1,汽车
2,飞机
3,火箭
用户输入索引后,将指定商品的内容拼接打印,如:用户输入1,则打印 您选择的商品是汽车

goods=["汽车","飞机","大炮"]
for i in range(0,len(goods)):            #索引是从0开始print(i+1,goods[i])                  #用户看的数字,索引+1显示
num=input("请输入要选择的商品序号:")    #用户输入的是看的数字,做索引要-1
num=int(num)-1
text="您选择的产品是:%s"%(goods[num])
print(text)
------------结果:
1 汽车
2 飞机
3 大炮
请输入要选择的商品序号:1
您选择的产品是:汽车

不改变原代码,插入一个数字实现的思想

goods=["汽车","飞机","大炮"]
goods.insert(0,"0")               #列表前面插入一个字符
for i in range(1,len(goods)):      #索引从1开始print(i,goods[i])
num=input("请输入要选择的商品序号:")
num=int(num)
text="您选择的产品是:%s"%(goods[num])
print(text)
----------------结果:
1 汽车
2 飞机
3 大炮
请输入要选择的商品序号:1
您选择的产品是:汽车

2、#1,(1)(1,)()之间类型的区别

v1=1
v2=(1)
v3=(1,)
v4=()
print(type(v1),type(2),type(v3),type(v4))
------------结果:
<class 'int'> <class 'int'> <class 'tuple'> <class 'tuple'>
# 元组记得加逗号。小括号是元组,小括号只有一个数是数字,小括号一个数字加个逗号才是元组。 
[(1),(2),(3)]等价于[1,2,3],

 3、数据类型总结:

int
 py2/py3
 除法
 强制转换:
  int('字符串') 【重要】
  int(布尔值)
bool
 强制转换:
  bool(整数) -> bool(1)/.. -> bool(0)
  bool(字符串) -> bool('xx') --> bool("")
  bool(列表) -> bool([]) --> bool([])
  bool(元组) -> bool(()) --> bool(空元组)
   v1 = bool(0)
   v2 = bool("")
   v3 = bool([])
   v4 = bool(())
   print(v1,v2,v3,v4) # False
str
 独有功能:upper/lower/split/strip/replace/isdigit/startswith/endswith/format/join/encode
 公共公共:
  len
  索引
  切片
  步长
  for循环
  删除【无】
  更新【无】
 强制转换:
  str(999) # "999"
  str(True) # "True"
  str(["唐开发",'李忠伟']) # "["唐开发",'李忠伟']" --> v2 = "".join(["唐开发",'李忠伟'])
  str(["唐开发",'李忠伟'])
list
 独有功能:append/insert/pop/remove/clear/ extend
 公共功能:
  len
  索引
  切片
  步长
  for循环
  删除
  更新
 强制转换:
  list("asdfadfasfdadfasfd")
   v1 = list("asdfadfasfdadfasfd")
   print(v1)
  list( (11,22,33,44,) )
   v1 = list( (11,22,33,44,) )
   print(v1)
tuple
 独有功能【无】
 公共功能:
  len
  索引
  切片
  步长
  for循环
  删除【无】
  更新【无】
 强制转换:
  tuple('adfadfasdfasdfasdfafd')
   tuple([11,22,33,44])
   v1 = list("asdfadfasfdadfasfd")
  print(v1)
  v1 = list( (11,22,33,44,) )
  print(v1)
  v1 = tuple('adfadfasdfasdfasdfafd')
  print(v1)
总结
常见的类型转换
 # 字符串转数字
 # 数字转字符串
 # 列表转元组
 # 元组转列表
 # 其他转bool时,只有:0 “” [] ()

 

4、#字符串是数字且有空格,先去掉空格才能int()#

li=[" 8 ","  12  "]
mcw=li[0]+li[1]
mcw2=int(li[0])+int(li[1])
mcw3=int("  5  ")+int(" 11  ")
mcw4=int("      12       ")
print(mcw)
print(mcw2,mcw3,mcw4)
--------------结果:8   12  
20 16 12

结论:字符类型的数字带有空格时,使用int()函数转化为数字时无需提前去空格。由上可得,转化的过

程中应该是做了去空格的操作了。

5、字典:


http://www.runoob.com/python/python-dictionary.html

5.1字典简单理解

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

>>>dict = {'a': 1, 'b': 2, 'b': '3'} >>> dict['b'] '3' >>> dict {'a': 1, 'b': '3'}

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

一个简单的字典实例:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

也可如此创建字典:

dict1 = { 'abc': 456 } dict2 = { 'abc': 123, 98.6: 37 }

 

5.4、#添加键值对以及定义空字典添加键值对,update (增)

dic={}
dic["name"]="mcw"
dic["age"]=18
print(dic)
------------结果:
{'name': 'mcw', 'age': 18}
#原有字典.update(另一个字典) 不存在的键添加,存在的键覆盖
userinfo={"username":"mcw","password":123456}
userinfo.update({"age":18,"password":654321})
print(userinfo)
---------------结果:
{'username': 'mcw', 'password': 654321, 'age': 18}

 

5.5#字典删除元素pop/del(删)

dic={"name":"mcw","age":18,"hobby":"music"}      #pop删除
dic.pop("hobby")
print(dic)
-----------结果:
{'name': 'mcw', 'age': 18}
#del删除
userinfo={"username":"mcw","password":123456}
del userinfo["password"]
print(userinfo)
------------------结果:
{'username': 'mcw'}

 

5.3字典的修改:(存在就修改/不存在就增加)(改)

---value 是1 "1"不一样的注意

userinfo={"username":"mcw","password":123456} userinfo["username"]="xiaoma" print(userinfo) -------------结果: {'username': 'xiaoma', 'password': 123456}
#多个键值修改
userinfo={"username":"mcw","password":123456}
userinfo.update({"username":"xiaoma","password":654321})
print(userinfo)
--------------------结果:
{'username': 'xiaoma', 'password': 654321}

5.2、#取字典元素:(查),

userinfo={"username":"mcw","password":123456}
print(userinfo['username']) #获取字典中单个键的值
print(userinfo.keys()) #keys获取字典中所有的键
print(userinfo.values()) #valuses获取字典中所有的值
------结果:
mcw
dict_keys(['username', 'password'])
dict_values(['mcw', 123456])
print(type(userinfo.values()))
---------结果:
<class 'dict_values'>
userinfo={"username":"mcw","password":123456}   #打印整个字典
print(userinfo)
--------------结果:
{'username': 'mcw', 'password': 123456}userinfo={"username":"mcw","password":123456}
for v1,v2 in userinfo.items(): #items获取所有的键值对
print(v1,v2)
--------------结果:
username mcw
password 123456for循环默认只循环字典中的键
userinfo={"username":"mcw","password":123456}
for i in userinfo:print(i)
-------------结果:
username
password报错:接收的多了
for item,v in userinfo:print(item,v)
--------结果:
for item,v in userinfo:
ValueError: too many values to unpack (expected 2)

#字典.get(键)
“字典名["键"]”来取没有的键会报错。

“字典.get(键)”、“字典.get(键,键不存在时的返回值)”同样能获取字典的值,字典中没有这个键的时候指定返回的值默认为none(特殊的数据类型,占内存空间的,是空的地址转为bool为false)

建议:尽量用get取字典,这样可以对键是否存在先做个判断

userinfo={"username":"mcw","password":123456}
result1=userinfo.get("username")
result2=userinfo.get("age")
print(result1,result2)
---------------结果:
mcw None使用形式:
result=userinfo.get("")
if result==None:print("键不存在")

5.5、#字典多行美观显示,注意不要忘记逗号

userinfo={"username":"mcw","password":123456
}
print(userinfo)
---------结果:
{'username': 'mcw', 'password': 123456}

5.6、#字典和列表嵌套构建用户登录的案例

user_list=[]
while True:u=input("请输入用户:")if u=="N":breakp=input("请输入密码:")v={}v["user"]=uv["pwd"]=puser_list.append(v)
print(user_list)
rec_str1=input("请输入用户:")
rec_str2=input("请输入密码:")
flag=0
for i in user_list:if i["user"]==rec_str1 and i["pwd"]==rec_str2:flag=1
if flag==1:print("请进行登录")
else:print("登录失败!")完善后:
user_list=[]
while True:u=input("请输入用户:")if u=="N":breakp=input("请输入密码:")v={}v["user"]=uv["pwd"]=puser_list.append(v)
print(user_list)
rec_str1=input("请输入用户:")
rec_str2=input("请输入密码:")
message="登录失败!"
for i in user_list:if i["user"]==rec_str1 and i["pwd"]==rec_str2:message="登录成功!"break
print(message)
-----------------结果:
请输入用户:mcw
请输入密码:123
请输入用户:xiaoma
请输入密码:123
请输入用户:N
[{'user': 'mcw', 'pwd': '123'}, {'user': 'xiaoma', 'pwd': '123'}]
请输入用户:mcw
请输入密码:123
登录成功!

5.7、单变量和双变量接收字典items()返回值


单变量和双变量接收字典items()返回值,单变量是循环接收字典键值对形成的元组,双变量一个接收键
,一个接收值。

---
v="4+3"
a,b=v.split("+")
print(a,b)
------结果:
4 3v="4+3"
a=v.split("+")
print(a[0],a[1])
------------结果:
4 3userinfo={"username":"mcw","password":123456}
for i in userinfo.items():print(i,type(i))
-------结果:
('username', 'mcw') <class 'tuple'>
('password', 123456) <class 'tuple'>userinfo={"username":"mcw","password":123456}
for k,v in userinfo.items():print(k,v,type(k),type(v))
------------结果:
username mcw <class 'str'> <class 'str'>
password 123456 <class 'str'> <class 'int'>

5.8生成列表中每个元素都是相同键的字典

两个列表元素,一个当字典的键,另一列表每个元素都是字典分隔开来的值。合并成列表中有多个字典元素的方法.

li1=["name","age","hobby"]
li2=["mcw,18,study","xiaoma,19,music","yh,10,eat"]
print([[li1[j]+":"+li2[i].split(",")[j] for j in range(0,len(li1))] for i in range(0,len(li2))])
mcw=[{li1[j]:li2[i].split(",")[j] for j in range(0,len(li1))} for i in range(0,len(li2))]
print(mcw)
print(type(mcw[0]))
----------------结果:
[['name:mcw', 'age:18', 'hobby:study'], ['name:xiaoma', 'age:19', 'hobby:music'], ['name:yh', 'age:10', 'hobby:eat']]
[{'name': 'mcw', 'age': '18', 'hobby': 'study'}, {'name': 'xiaoma', 'age': '19', 'hobby': 'music'}, {'name': 'yh', 'age': '10', 'hobby': 'eat'}]
<class 'dict'>

 

===
列表,元组嵌套。加一个字典,嵌套,意义何在呢
int/bool/str list/tuple/dict可以相互嵌套,

字典值:能放各种 所有都能当
字典键 :可以有:元组,数字,布尔值,字符串
               不可以:字典,列表 可hash的可以当key,字典和列表是可变的,不可hash,所以不能当键。

#元组 列表有序,字典无序,Python3.6之后字典有序了。

转载于:https://www.cnblogs.com/machangwei-8/p/10643474.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习笔记之异常

Python用异常对象来表示异常情况&#xff0c;如果异常对象未被处理或捕捉&#xff0c;程序就会回溯&#xff08;traceback&#xff09;中止执行。 异常可以在出错时自动引发&#xff0c;也可以主动引发。 异常被引发后如果不被处理就会传播至程序调用的地方&#xff0c;直到主程…

VSFTP的使用

一、基本安装 1.安装服务 yum -y install vsftpd //centos Redhat apt-get install vsftpd //debian ubuntu 2.开启服务 service vsftpd status //查看状态&#xff0c;默认是关闭的 service vsftpd start 3.开机随操作系统启动 chkconfig vsftpd on4.添加账号 useradd -d /…

OC Swift混编-Swift.h File not found

https://www.jianshu.com/p/f860fe1718ca 2016.09.13 11:53* 字数 266 阅读 1935评论 1喜欢 1今天碰到个神坑,本人项目是OC项目,最近开始使用Swift开始替代.但是,在替代的已开始就出现问题了:新建swift文件,然后提示创建bridging-Hearder文件,然后swift可以使用OC代码了.这些都…

视觉标定,再来一波!!更简单粗暴!!!!!!

继续&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 一、四个坐标系简介和转换 相机模型为以后一切标定算法的关键&#xff0c;只有这边有相当透彻的理解&#xff0c;对以后的标定算法才能有更好的理解。本人研究了好长时间&#xff0c;几乎每天…

深入浅出NIO之Selector实现原理

2019独角兽企业重金招聘Python工程师标准>>> 前言 Java NIO 由以下几个核心部分组成&#xff1a; 1、Buffer 2、Channel 3、Selector Buffer和Channel在深入浅出NIO之Channel、Buffer一文中已经介绍过&#xff0c;本文主要讲解NIO的Selector实现原理。 之前进行sock…

介绍一下画图小能手matplotlib。

我们在做完数据分析的时候需要把分析出来的结果&#xff0c;做一个图形化的形象表达&#xff0c;这里我们就需要用到画图小能手matplotlib&#xff0c;下面就演示一下常用的条形图和折线图 散点图 散点图的做大的作用是研究两个变量的相关性&#xff08;正相关&#xff0c;负相…

立体视觉标定源代码C++,简单粗暴!粗暴·······

疑点解答&#xff1a; 摄像机矩阵由内参矩阵和外参矩阵组成&#xff0c;对摄像机矩阵进行QR分解可以得到内参矩阵和外参矩阵。 内参包括焦距、主点、倾斜系数、畸变系数 &#xff08;1&#xff09; 其中&#xff0c;fx&#xff0c;fy为焦距&#xff0c;一般情况下&#xff…

11. 临时表

-- 查询5大洲国家总数 SELECT continent,COUNT(*) FROM country GROUP BY continent;-- 演示临时表 CREATE TEMPORARY TABLE tmp_table ( continent VARCHAR(20), COUNT INT );INSERT INTO tmp_table SELECT Asia AS continent,COUNT(*) FROM country WHERE continent Asia;…

MongoDB负载信息一目了然 阿里云HDM重磅发布MongoDB监控和诊断功

2019独角兽企业重金招聘Python工程师标准>>> 混合云数据库管理&#xff08;HDM&#xff09;的统一监控、告警、诊断功能新增了对MongoDB的支持。 通过直观的方式将MongoDB多个维度的负载信息统一整合&#xff0c;不仅可以清晰的查看实时负载信息&#xff0c;也可以方…

在iview的Table中添加Select(render)

首先对Render进行分析&#xff0c;在iview官方的文档中&#xff0c;找到了table插入Button的例子&#xff1a; [javascript] view plaincopy { title: Action, key: action, width: 150, align: center, render: (h, params) > { return h(div, [ h(Butt…

JavaScript中call和apply方法

1 /*2 在js中 call和apply常用于绑定作用域3 */4 //1 简单的绑定5 function sum(a,b){6 return ab;7 }8 //将sum的功能绑定给test2来执行9 function test2(a,b){ 10 return sum.call(this,a,b); 11 } 12 // call 和apply的区别是 apply接收数组作为参数…

工业机械人运动学正逆解,简单粗暴!!!!!!

ur机械臂是六自由度机械臂&#xff0c;由D-H参数法确定它的运动学模型&#xff0c;连杆坐标系的建立如上图所示。 转动关节θi是关节变量&#xff0c;连杆偏移di是常数。 关节编号 α&#xff08;绕x轴&#xff09; a&#xff08;沿x轴&#xff09; θ&#xff08;绕z轴&am…

python opencv立体测距 立体匹配BM算法

立体标定应用标定数据转换成深度图标定 在开始之前&#xff0c;需要准备的当然是两个摄相头&#xff0c;根据你的需求将两个摄像头进行相对位置的固定&#xff0c;我是按平行来进行固定的&#xff08;如果为了追求两个双目图像更高的生命度&#xff0c;也可以将其按一定钝角固…

对于python 作用域新的理解

今天看Python习题&#xff0c;看到如下题目 def num():return [lambda x: i*x for i in range(4)] print([m(2) for m in num()])  # 求输出结果是什么 我看了半天才明白这应该是一个列表生成式&#xff0c;列表中的元素为四个匿名函数&#xff0c;我本以为每个匿名函数应该是…

Vue基础学习(一)------内部指令

一.v-if v-else v-show 指令 1.v-if v-if:是vue 的一个内部指令&#xff0c;指令用在我们的html中,用来判断是否加载html的DOM 现在举个栗子&#xff0c;判断用户的登录操作&#xff0c;用isLogin作为一个判断字段&#xff0c;登录成功&#xff0c;就显示用户的名称 代码&…

【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希

传送门 题目分析 题意即求有多少对字符串只相差一个字符&#xff0c;枚举删除每个字符后的哈希&#xff0c; 看有多少相等即可。 比如有如下字符串&#xff1a;$Sd123$&#xff0c;其中S部分的哈希值为H&#xff0c;删除的是d&#xff0c;则原字符串的哈希值为$$(((H * T d) *…

StereoRectify()函数定义及用法畸变矫正与立体校正

畸变矫正是上一篇博文的遗留问题&#xff0c;当畸变系数和内外参数矩阵标定完成后&#xff0c;就应该进行畸变的矫正&#xff0c;以达到消除畸变的目的&#xff0c;此其一。 在该系列第一部分的博文中介绍的立体成像原理中提到&#xff0c;要通过两幅图像估计物点的深度信息&a…

死磕 java集合之TreeMap源码分析(三)- 内含红黑树分析全过程

2019独角兽企业重金招聘Python工程师标准>>> 欢迎关注我的公众号“彤哥读源码”&#xff0c;查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 删除元素 删除元素本身比较简单&#xff0c;就是采用二叉树的删除规则。 &#xff08;1&#xff09;如果删除的位置有两…

Linux:进程实例信息(/proc)

https://blog.csdn.net/test1280/article/details/73632333 Linux:进程实例信息&#xff08;/proc&#xff09; 问几个问题&#xff1a; 1.怎么知道一个进程对应哪个可执行文件&#xff1f; 2.怎么知道一个进程的资源限制&#xff1f; 3.怎么知道一个进程所处的环境&#xff1f…

四元素理解

旋转变换_四元数 2017年03月29日 11:59:38 csxiaoshui 阅读数&#xff1a;5686 1.简介 四元数是另一种描述三维旋转的方式&#xff0c;四元数使用4个分量来描述旋转&#xff0c;四元数的描述方式如下&#xff1a; qsxiyjzk,(s,x,y,z∈ℝ&#xff09;i2j2k2ijk−1 四元数的由…