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.pswp.cn/news/252009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252009.shtml
英文地址,請注明出處:http://en.pswp.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 四元數的由…