Python(18)-字典dictionary、集合

Python高級數據類型-字典

  • 1.字典的定義
  • 2.字典的基本操作:查詢,增加,修改,獲取
  • 3.字典的統計、合并、清空
  • 4.字典的循環遍歷
  • 5.返回最大“值”對應的“鍵”
  • 6.應用場景
    • pop(key)
  • 7.集合

字典是除了列表之外最靈活的數據類型,用來描述一個物體的關鍵信息,比如描述一個人的特征,身高,體重,年齡,

1.字典的定義

字典: 用于存儲無序的數據類型,不關心數據保存的順序,用鍵來訪問保存的數據
列表: 用于存儲 有序 的數據類型,用索引訪問—有序

定義方式1–用{}+Key:value定義,鍵值對之間用逗號分隔。

#一個鍵值對占據一行,看起來比較清晰
xiaoming={"name": " xiaoming","age": 18,"gender": True,"height": 1.75,"weight": 65}
print(xiaoming)

定義方式1–dict()+元組

items = [('height', 180), ("weigh", 124)]
D = dict(items)
D2 = {'height': 180,'weigh': 124}
# 字典的遍歷

鍵用來獲取數據,最常用的鍵的類型是字符串,值用來保存數據,鍵應該是唯一的。

輸出: 輸出的順序和定義的順序一般不同,因為字典是一個無順序的數據類型

{‘gender’: True, ‘age’: 18, ‘name’: ’ xiaoming’, ‘weight’: 65, ‘height’: 1.75}

2.字典的基本操作:查詢,增加,修改,獲取

xiaoming_dict={“name”:“xiaoming”}

1.查詢:中括號+Key,指定的Key不存在時,程序會報錯(取值)

print (xiaoming_dict[“name”])

2.增加鍵值對,如果key存在會修改該值,如果不存在會新增一個鍵值對

xiaoming_dict[“age”]=18

3.修改變量值,格式增肌鍵值對相同

xiaoming_dict[“name”]=“xiaoxiaoming”

4.刪除指定鍵值對,key不對程序報錯

xiaoming_dict.pop(“name”)
print(xiaoming_dict)

刪除后輸出:{‘age’: 18}

5 獲取 鍵 對應的值,如果鍵不存在,則返回None,比第一種方法好用 (default用于指定鍵不存在時返回類型)

dict.get(key, default=None)

6.返回所有值

z={“a”:1, “b”:2}
print(z.values())
#輸出 [1, 2]

3.字典的統計、合并、清空

xiaoming_dict={“name”:“xiaoming”,“age”: 18}

1.統計鍵值對的數量,(輸出2)

print(len(xiaoming_dict))

2.合并字典

temp_dict={“height”: 1.75, “age”: 20}
xiaoming_dict.update(temp_dict)

輸出:{‘age’: 20, ‘name’: ‘xiaoming’, ‘height’: 1.75}

被合并的字典中已經包含存在的鍵值對,原有的會被覆蓋,如此例子中的name.

3.清空字典

xiaoming_dict.clear()
print(xiaoming_dict)

輸出:{}

4.字典的循環遍歷

xiaoming={"name": " xiaoming","qq": "123456","phone": "10086"}
#變量K是每一次循環中獲取到的鍵值對的Key
for k in xiaoming:print ("%s-%s"%(k,xiaoming[k]))

輸出:

qq-123456
phone-10086
name- xiaoming

5.返回最大“值”對應的“鍵”

counts={1: 1, 2: 1, 3: 1, 4: 2, 5: 4}
max(counts.keys(), key=counts.get)

key=counts.get 中的key 是max的參數,
counts.keys()獲取的是字典的所有值,獲取最大值之后,用get 返回最大的的鍵?

6.應用場景

字典一般與列表一起使用,定義多個字典,放在同一個列表變量中,循環遍歷列表,在循環體中對每一個字典進行相同的處理。

card_list=[{"name": "zhangsan","qq": "12345","phone": "110"},{"name": "lisi","qq": "123457","phone": "10086"}
]
for card_info in card_list:print(card_info)

輸出

{'qq': '12345', 'phone': '110', 'name': 'zhangsan'}
{'qq': '123457', 'phone': '10086', 'name': 'lisi'}

pop(key)

彈出對應的值

dit={1:"r",2:"b"}
print(dit.pop(1))
print (dit)

leetcode128:重復元素,hash表實現線性時間查詢

class Solution(object):def singleNumber(self, nums):""":type nums: List[int]:rtype: int"""li={}for val in nums:try:li.pop(val)except:li[val]=1return li.popitem()[0]  # 彈出元素,鍵為需要的答案

7.集合

集合-不可變的無序集合,元素唯一,用大括號定義,支持集合的交和并操作

set1 = {1, 2, 3}
set2 = set([2, 3, 4])
set3 = {1,1,2,3,5}  # 實際set3 = {1,1,2,3,5}
print(set1 - set2)  # 集合求差,包含在x 但是不包含在y中的元素:{1}
print(set1 | set2)  # 集合求并:{1, 2, 3, 4}
print(set1 & set2)  # 集合求交:{2, 3}
print(set1 ^ set2)  # 集合求異或, 只被一個集合包含的元素 {1, 4}
print(set1 > set2)  # 包含關系,set1 真包含于set2,返回True :False

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445276.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445276.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

redis——Redis中的LRU算法改進

redis通常使用緩存,是使用一種固定最大內存的使用。當數據達到可使用的最大固定內存時,我們需要通過移除老數據來獲取空間。redis作為緩存是否有效的重要標志是如何尋找一種好的策略:刪除即將需要使用的數據是一種糟糕的策略,而刪…

redis——HyperLogLog

HyperLogLog 是一種概率數據結構,用來估算數據的基數。數據集可以是網站訪客的 IP 地址,E-mail 郵箱或者用戶 ID。 基數就是指一個集合中不同值的數目,比如 a, b, c, d 的基數就是 4,a, b, c, d, a 的基數還是 4。雖然 a 出現兩次…

機器學習知識總結系列-機器學習中的優化算法總結(1-4)

文章目錄1.梯度下降1.1批量梯度下降(BGD)1.2隨機梯度下降(SGD)1.3 小批量隨機梯度下降(MSGD)1.4 比較:1.5 動量算法(momentum)1.6 Nestrov Momentum2. 自適應方法2.1 自適應學習率算法&#xff…

Python(19)-字符串、Unicode字符串

高級數據類型--字符串、Unicode字符串1.字符串的定義2.字符串的長度、計數、Index3.字符串常用方法3.1判斷類型3.2查找和替換3.3文本對齊3.4去除空白字符.strip()4.字符串的拆分和拼接5.字符串的切片6.跨行字符串7.包含轉義字符r8.字符串的分割與連接9.Unicode字符串字符串-不變…

機器學習中的距離和損失函數

文章目錄13.1 距離度量13.2 損失函數13.1 距離度量 距離函數種類:歐式距離、曼哈頓距離、明式距離(閔可夫斯基距離)、馬氏距離、切比雪夫距離、標準化歐式距離、漢明距離、夾角余弦等常用距離函數:歐式距離、馬氏距離、曼哈頓距離…

Python(20)-高級數據類型的公共方法

高級數據類型的公共方法1內置函數2高級數據類型切片3運算符,*,in4完整的for循環公共方法是列表,元組,字典,字符串都能使用的方法1內置函數 內置函數:不需要import導入模塊,就可以直接使用的函數…

redis——為什么選擇了跳表而不是紅黑樹?

跳表是個啥東西請看這個文章。 我們知道,節點插入時隨機出一個層數,僅僅依靠一個簡單的隨機數操作而構建出來的多層鏈表結構,能保證它有一個良好的查找性能嗎?為了回答這個疑問,我們需要分析skiplist的統計性能。 在…

機器學習公式推導

文章目錄線性回歸邏輯回歸線性判別分析PCAk-means決策樹svm隨機深林GBDTxgboost強化學習MapReduce線性回歸 邏輯回歸 對于分類問題:輸出0/1,超過[0,1]沒有意義,使用sigmoid函數 **代價函數:**使用L2平方差,由于模型函…

Python綜合應用(1)--名片管理系統開發

第一個綜合應用-名片管理系統1框架搭建2完善功能綜合應用,名片管理系統 歡迎界面,不同選項,1.新建名片,2.顯示全部,3 查詢名片(查到之后可以修改名片信息),0 退出系統 程序開發流程…

springboot1——spring相關入門

spring 隨著我們開發,發現了一個問題: A---->B---->C---->D 在A中創建B的對象調用B的資源 在B中創建C的對象調用C的資源 在C中創建D的對象調用…

大數據學習(06)-- 云數據庫

文章目錄目錄1.什么是云數據庫?1.1 云計算和云數據庫的關系1.2 云數據庫的概念1.3 云數據庫的特性1.4 云數據庫應用場景1.5 云數據庫和其他數據的關系2.云數據庫產品有哪些?2.1 云數據庫廠商概述2.2 亞馬遜云數據庫產品2.3 Google云數據庫產品2.4 微軟云…

Python(21)--變量進階

變量的進階使用1變量引用2可變、不可變數據類型3局部變量和全局變量4.Tips本系列博文來自學習《Python基礎視頻教程》筆記整理,視屏教程連接地址:http://yun.itheima.com/course/273.html在博文:https://blog.csdn.net/sinat_40624829/articl…

HTTP 響應代碼全集

HTTP 響應狀態代碼指示特定 http 請求是否已成功完成。響應分為五類:信息響應(100–199),成功響應(200–299),重定向(300–399),客戶端錯誤(400–499)和服務器錯誤 (500–599)。狀態代碼由 section 10 of RFC 2616定義 信息響應 …

機器學習知識總結系列-機器學習中的數學-矩陣(1-3-2)

矩陣 SVD 矩陣的乘法狀態轉移矩陣狀態轉移矩陣特征值和特征向量 對稱陣 正交陣 正定陣數據白化矩陣求導 向量對向量求導 標量對向量求導 標量對矩陣求導一.矩陣1.1 SVD奇異值分解(Singular Value Decomposition),假設A是一個mn階矩陣&#xf…

阿里Java編程規約(注釋)提煉

【強制】類、類屬性、類方法的注釋必須使用 Javadoc 規范,使用/**內容*/格式,不得使用 // xxx 方式。 說明:在 IDE 編輯窗口中,Javadoc 方式會提示相關注釋,生成 Javadoc 可以正確輸出相應注釋;在 IDE 中…

Python面試題-交換兩個數字的三種方法

Python實現兩個數字交換解法1解法2解法3a6 b100 解法1 使用其他變量,最通用的方法 ca ab bc 解法2 不使用其他變量,利算法節省內存空間 aab ba-b aa-b 解法3 python 專有 a,b(b,a) #等號右邊是一個元組 或者可以寫為: a,bb,a print(a,b)

面試中海量數據處理總結

教你如何迅速秒殺掉:99%的海量數據處理面試題 前言 一般而言,標題含有“秒殺”,“99%”,“史上最全/最強”等詞匯的往往都脫不了嘩眾取寵之嫌,但進一步來講,如果讀者讀罷此文,卻無任何收獲&…

redis——舊版復制

Redis 的復制功能分為同步(sync)和命令傳播(command propagate)兩個操作: 同步操作用于將從服務器的數據庫狀態更新至主服務器當前所處的數據庫狀態。命令傳播操作用于在主服務器的數據庫狀態被修改, 導致…

Linux(3)-網-ifconfig,ping,ssh

終端命令網-ping,ssh1. ifconfig -a2. ping3. ssh3.1安裝3.2 連接3.3 配置登入別名防火墻端口號,todo1. ifconfig -a 查看IP地址, 還可以用于配置網口。 ifconfig -a 2. ping ping命令: 檢測到IP地址的連接是否正常。命令開始后由本機發送數據包a&…

redis——相關問題匯總

什么是redis? Redis 本質上是一個 Key-Value 類型的內存數據庫, 整個數據庫加載在內存當中進行操作, 定期通過異步操作把數據庫數據 flush 到硬盤上進行保存。 因為是純內存操作, Redis 的性能非常出色, 每秒可以處理…