日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Python之字典

 印度阿三17 2019-05-16

字典是無序的對象集合,使用鍵來存取索引,鍵必須是惟一的,值可以存取任何數(shù)據(jù)類型,但是鍵只能使用字符串、數(shù)字或元組,使用值來存取數(shù)據(jù),通常用于存儲描述一個物體的相關信息。

創(chuàng)建字典

name = {'zhangsan': 12,'lisi': 15,'boxiaoyuan': 22}
print(name) # {'lisi': 15, 'boxiaoyuan': 22, 'zhangsan': 12}

注:字典由多個鍵及對應的值組成,鍵和值使用冒號分割,字典中鍵的值必須唯一,而值不需要,另外,字典中的鍵必須是不可變的,如:字符串,元組和數(shù)字。、

訪問字典

age={'zhangsan': 12,'lisi': 15,'boxiaoyuan': 22}
print('age:', age['zhangsan']) # age: 12

修改字典

age={'zhangsan': 12,'lisi': 15,'boxiaoyuan': 22}
age['zhangsan'] = 19 # 修改一個元素的值
age['bokeyuan'] = 33 # 添加一個元素的值
print(age) # {'zhangsan': 19, 'bokeyuan': 33, 'boxiaoyuan': 22, 'lisi': 15}

刪除字典

刪除字典可以刪除對應的鍵值對,也可以刪除整個字典。

age = {'zhangsan': 12, 'lisi': 15, 'boxiaoyuan': 22}
del age['zhangsan'] # {'lisi': 15, 'boxiaoyuan': 22},刪除指定的鍵值對
print(age)
del age # 刪除整個字典
print(age) # NameError: name 'age' is not defined

循環(huán)遍歷

xiaoming = {"name": "xiaoming", "age": 18}
for key in xiaoming:
print("%s:%s" % (key, xiaoming[key]))

在實際開發(fā)中,由于字典中每一個鍵值對保存數(shù)據(jù)的類型是不同的,所以針對字典的循環(huán)遍歷需求并不是很多。

字典常用的方法

# -*- coding:utf-8 -*-
import copy

age = {'zhangsan': 12, 'lisi': 15, 'boxiaoyuan': 22}
age.pop('boxiaoyuan')  # 移出列表中的元素
print(age)  # {'zhangsan': 12, 'lisi': 15}
print(age.get('lisi'))  # 15,獲取列表中的元素
print(age.items())  # dict_items([('zhangsan', 12), ('lisi', 15)]),返回可遍歷的元組數(shù)組
print(age.keys())  # dict_keys(['zhangsan', 'lisi']),返回字典的所有鍵
print(age.setdefault('wangwu'))  # None,根據(jù)指定鍵獲取值,如果沒有則在字典中新增加鍵并設置默認值None,如果存在值,則顯示出來
print(age.setdefault('zhangsan'))  # 12
print(age)  # {'zhangsan': 12, 'wangwu': None, 'lisi': 15}

age2 = {'bokeyuan': 44}
age.update(age2)  # 用age2的值更新age的值
print(age)  # {'zhangsan': 12, 'wangwu': None, 'lisi': 15, 'bokeyuan': 44}

print(age.values())  # dict_values([12, None, 15, 44]),返回字典中所有值

D1 = {'name': 'zhangsan', 'method': ['run', 'eat', 'drink']}  # 原始數(shù)據(jù)
D2 = D1  # 直接引用,D1和D2指向同一對象
D3 = D1.copy()  # 淺拷貝,復制時只會復制父對象,不會復制對象內部的子對象
D4 = copy.deepcopy(D1)  # 深拷貝,復制父對象和子對象
D1['name'] = 'lisi'
D1['method'].remove('eat')
print('原始數(shù)據(jù):',{'name': 'zhangsan', 'method': ['run', 'eat', 'drink']})
print('D1修改后數(shù)據(jù):', D1)  # {'name': 'lisi', 'method': ['run', 'drink']}
print('D2數(shù)據(jù):', D2)  # {'name': 'lisi', 'method': ['run', 'drink']}
print('淺拷貝數(shù)據(jù):', D3)  # {'name': 'zhangsan', 'method': ['run', 'drink']}
print('深拷貝數(shù)據(jù):', D4)  # {'name': 'zhangsan', 'method': ['run', 'eat', 'drink']}
#  可見,復制后對于原字典內部的子對象(方括號括起的元素)進行操作,淺拷貝字典會受到影響,深拷貝不會受到影響。
lists = [1, 2, 3, 4]
dicts = dict.fromkeys(lists)  # 創(chuàng)建一個新的字典,seq為字典的鍵,value為鍵對應的初始值,默認為None
print(dicts)  # {1: None, 2: None, 3: None, 4: None}
dicts = dict.fromkeys(lists, 10)
print(dicts)  # {1: 10, 2: 10, 3: 10, 4: 10}
print("zhangsan在字典中", 'zhangsan' in age)  # True,key in dict用來判斷鍵是否在字典中,在的話,返回True,不在,返回False
age.clear()  # 清除字典中所有的值
print(age)  # {}

字典的其他說明

a)字典的格式化輸出

age = {'zhangsan': 12,'lisi': 15,'boxiaoyuan': 22}
print('張三的年齡:%(zhangsan)s' % age) # 12

b)字典和列表的區(qū)別

字典的特點:查找和插入的速度非常快,但是需要占用大量內存,內存浪費較多。

列表的特點:查找和插入的速度隨著元素的增加而減慢,占用空間小。

來源:http://www./content-1-192551.html

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多