程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python 開發 -- 15字典類型內置方法

編輯:Python

文章目錄

    • 一.用途
    • 二.定義方式
    • 三.數據類型轉換
    • 四.常用操作 + 內置方法
    • 優先掌握的操作(*********)
      • 1.按照 key 取值, 可存可取
      • 2、長度 : .len( )
      • 3.成員運算 in 和 not in
      • 4.刪除 del, .pop( ), .popitem
      • 5.取值 : 鍵 .keys( ), 值 .values( ), 鍵值對 .items( )
      • 6.取值 .get( ) --->(尋找)
    • 需要掌握的操作(****)
      • 1.更新 .update( )
      • 2.清空 .clear( )
      • 3.初始化(造)一個字典模板 .fromkeys( )
      • 4.添加並返回值 .setdefaul( )
    • 五.總結
      • 可以存多個值
      • 無序, 取值是按 "key" 取對應的 "value"
      • 可變類型--->不可 hash 類型
  • {'name': 'mm', 'age': '12'} #如果有就不添加

一.用途

  • key : value 的形式存多個值
  • 優點 : 存取都快, 每一個值都有對應的 key

二.定義方式

  • “{ }” 內以逗號分隔開多個元素
  • 格式為 “key : value”, 其中 key 必須為不可變類型, value 可以是任意類型
  • 字典類型對應的"工廠"就是dict
dic = {
"name" : "mm","age" : 18}
# 背後的操作就是
dic = dict(name = "mm", age = 18)

三.數據類型轉換

res=dict([("k1",1111),("k2",2222),("k3",3333)])
print(res)
res=dict(x=111,y=222,z=333)
print(res)
# ".fromkeys"方法在下面"需要掌握的方法"裡詳細介紹
res={
}.fromkeys(["name","age","gender"],None)
print(res)
=============================
info = [
["name","mm"],
("age",22),
["gender","male"]
]
res = dict(info) #dict直接把列表字符轉換成字典字符
print(res)
{
'name': 'mm', 'age': 22, 'gender': 'male'}
================================
# 方式一:
keys = ["name","age","gender"]
value=None
d={
}
for k in keys:
d[k]= None
print(d)
{
'name': None, 'age': None, 'gender': None}
# 方式二:
keys = ["name","age","gender"]
value=None
d={
}.fromkeys(keys,value)
{
'name': None, 'age': None, 'gender': None}
#方式三:
keys = ["name","age","gender"]
d={
}.fromkeys(keys,None) # 默認情況下是:value=None
{
'name': None, 'age': None, 'gender': None}

四.常用操作 + 內置方法

優先掌握的操作(*********)

1.按照 key 取值, 可存可取

# 按 "key" 存一個值
dic = {
"name":"mm"}
dic["age"] = 22
print(dic) # {'name': 'mm', 'age': 22}
# 也可以取值,改值
dic["age"] = 18
dic["name"] = dic["name"].upper()
print(dic) #{'name': 'mm', 'age': 18}

2、長度 : .len( )

  • 統計的是 key 的個數
  • 如果存在 key 相同的鍵值對, 那麼以後入的為主
# 以 "key" 來決定個數
dic = {
"name":"mm","age":22,"sex":"man"}
print(len(dic)) # 3
# 有兩個 "age", 以後面的為主(就相當於你後面修改了"age"的值一樣)
dic = {
"name":"mm","age":22,"sex":"man","age":18}
print(dic) #{'name': 'mm', 'age': 18, 'sex': 'man'}
==========================================
dic = {
"name":"mm","age":"12","name":"kk"}
print(len(dic["name"]))
2

3.成員運算 in 和 not in

  • 判斷是不是字典的 key
dic = {
"name":"mm","age":22,"sex":"man"}
print("name" in dic) #True
print("age" not in dic) #False

4.刪除 del, .pop( ), .popitem

  • del : 直接刪除"誰", 通用萬能刪除, 它不支持賦值語法, 賦值會報錯
  • .pop() : 根據 key 進行刪除, 返回的值是 key 對應的 value
  • .popitem() : 無參數, 隨機刪除一個鍵值, 返回一個元組, 元組裡第一個值是 key, 第二個值是對應的 value
# "del"
dic = {
"name":"mm","age":22,"sex":"man"}
del dic["name"]
print(dic) #{'age': 22, 'sex': 'man'}
# ".pop", 會返回刪除的 "value"
res = dic.pop('age')
print(res) #22
print(dic) #{'sex': 'man'}
# ".popitem"返回的值是元組, ("key", "value")
dic = {
"name":"mm","age":22,"sex":"man"}
res = dic.popitem()
print(res) #('sex', 'man')
print(dic) #{'name': 'mm', 'age': 22}

5.取值 : 鍵 .keys( ), 值 .values( ), 鍵值對 .items( )

  • .keys() : 只取 key
  • .values() : 只取 value
  • .items() : 既取 key, 又取 value
  • 以下加入 for 循環組合使用
dic = {
"name":"mm","age":22,"sex":"man"}
# ".keys()"
list=[]
print(dic.keys()) #dict_keys(['name', 'age', 'sex'])
for k in dic.keys():
list.append(k)
print(list) #['name', 'age', 'sex']
# ".values()"
list2 = []
print(dic.values()) #dict_values(['mm', 22, 'man'])
for v in dic.values():
list2.append(v)
print(list2) #['mm', 22, 'man']
# ".items()"
l1 = []; l2 = []
print(dic.items()) #dict_items([('name', 'mm'), ('age', 22), ('sex', 'man')])
for k,v in dic.items():
l1.append(k)
l2.append(v)
print(l1) #['name', 'age', 'sex']
print(l2) #['mm', 22, 'man']

ps : Python2 當中的 鍵 .keys( ), 值 .values( ), 鍵值對 .items( ) 直接是列表輸出的結果,比較占空間,而Python3中像是一只老母雞, 想要就取一個

# "Python2" 中的字典取值
>>> dic = {
"name":"mm","age":22,"sex":"man"}
>>>
>>> dic.keys()
['name', 'age', 'sex']
>>>
>>> dic.values()
['mm', 22, 'man']
>>>
>>> dic.items()
[('name', 'mm'), ('age', 22), ('sex', 'man')]

6.取值 .get( ) —>(尋找)

  • 上面提到可以使用 “dic[key]” 這種方式取值, 但找不到會報錯
  • .get() : 參數為 key, 找不到返回 None, 容錯性更好
dic = {
"name":"mm","age":22,"sex":"man"}
# "dic[key]"找不到報錯
res = dic["xxxx"]
print(res) #報錯
# ".get()"找到返回"value",找不到返回"None"
res = dic.get("name")
print(res) #mm
res = dic.get("xxxx")
print(res) #None

需要掌握的操作(****)

1.更新 .update( )

  • 更新就是鍵值對的修改或增加
  • 就像一個軟件, 新版本是在舊版本的基礎上修改 BUG 或者增加功能
  • 對與老字典來說,更新指的是 : 新字典中有而老字典中沒有則添加,新有而老也有則覆蓋
dic = {
"name":"mm","age":22}
# 修改了 "age", 增加了 "sex"
res = dic.update({
"age":18,"sex":"man"})
print(dic) #{'name': 'mm', 'age': 18, 'sex': 'man'}

2.清空 .clear( )

dic = {
"name":"mm","age":22,"sex":"man"}
dic.clear()
print(dic) #{}

3.初始化(造)一個字典模板 .fromkeys( )

  • 前一個參數是 key, 後一個參數是 value
  • 語法 : {}.fromkeys(['name','age','sex'],'xxxxxx')
# 不使用 ".fromkeys" 建模板
good_info={

'name':None,
'price':None,
'count':None
}
# 使用 ".fromkeys()" 建模板
dic = {
}.fromkeys(['name','age','sex'],None)
print(dic) #{'name':None,'age':None,'sex':None}
  • 示例
使用 "for" 循環
list1=['name','price','count']
dic={
}
for x in list1:
dic[x]=None
print(dic) #{'name': None, 'price': None, 'count': None}
使用 ".fromkeys()" 直接實現
dic = {
}.fromkeys(list1,None)
print(dic) #{'name': None, 'price': None, 'count': None}
# 加入商品信息
'mac' 20000 10 #商品信息
dic['name']='mac' #將商品信息加入到模板中
dic['price']=20000 #價格
dic['count']=10 #個數

4.添加並返回值 .setdefaul( )

  • 如果字典裡有要添加的 key, 則不修改, 並返回 key 對應的原 value
  • 如果字典裡沒有要添加的 key, 則添加, 並返回添加的 key 對應的新 value
# 添加存在的 "key"
dic={
'name':'mm','age':22}
res=dic.setdefault('name','mm')
print('返回值:',res) #返回值: mm
print(dic) #{'name': 'mm', 'age': 22}
# 添加不存在的 "key"
res=dic.setdefault('sex','man')
print('返回值:',res) #返回值: man
print(dic) #{'name': 'mm', 'age': 22, 'sex': 'man'}
# 如果key有,就不添加,如果沒有就添加
dic = {
"name":"mm","age":"12"}
if "name" in dic:
... # ...等於pass
else:
dic["name"] = "mm"
print(dic)
# {'name': 'mm', 'age': '12'} #如果有就不添加
{
'nam': 'mm', 'age': '12', 'name': 'mm'} # 如果沒有就添加 'name': 'mm'

五.總結

  • 可以存多個值

  • 無序, 取值是按 “key” 取對應的 “value”

  • 可變類型—>不可 hash 類型

“name” in dic:
… # …等於pass
else:
dic[“name”] = “mm”
print(dic)

{‘name’: ‘mm’, ‘age’: ‘12’} #如果有就不添加

{‘nam’: ‘mm’, ‘age’: ‘12’, ‘name’: ‘mm’} # 如果沒有就添加 ‘name’: ‘mm’


## 五.總結
- ### 可以存多個值
- ### 無序, 取值是按 "key" 取對應的 "value"
- ### 可變類型--->不可 hash 類型

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved