『壹』 python字典添加元素
s={}
s['aaaa']=['11111','22222','33333','4444444']
s['bbbb']=['aaaaa']
prints
運行結果:{'aaaa':['11111','22222','33333','4444444'],'bbbb':['aaaaa']}
你想表達的是這意思嗎
『貳』 python dict 實現原理 2019-04-17
dict對象是Python中一個原始的數據類型,按照鍵值對的方式存儲,中文名為字典,其通過鍵名查找對應的值有很高的效率,時間復雜度在常數級別O(1)。Python dict的底層是依靠哈希表(Hash Table)進行實現的,使用開放地址法解決沖突。所以其查找的時間復雜度會是O(1),why?
哈希表是key-value類型的數據結構,通過關鍵碼值直接進行訪問。通過散列函數進行鍵和數組的下標映射從而決定該鍵值應該放在哪個位置,哈希表可以理解為一個鍵值需要按一定規則存放的數組,而哈希函數就是這個規則。
演算法中時間和空間是不能兼得的,哈希表就是一種用合理的時間消耗去減少大量空間消耗的操作,這取決於具體的功能要求。
創建一個數組,數組下標是索引號,數組中的值是要獲得的數據,這樣只需要O(1)的時間復雜度就可以完成操作,但是擴展性不強,有以下兩個方面的考慮:
-1- 新添加的元素超出數組索引范圍,這就需要重新申請數組進行遷移操作。
-2- 假設一種極端的情況:只存在兩個元素,索引號分別是1和100000000001,按照先前的設計思路,會浪費很大的存儲空間。
會不會存在一個方法,為已有的索引創建新的索引,通過壓縮位數,讓新索引可以和原有的大范圍的稀疏索引進行一一對應,新索引所需要的存儲空間要大大減小,這就是哈希思想。
上面的例子中哈希函數的設計很隨意,但是從這個例子中我們也可以得到信息:
哈希函數就是一個映射,因此哈希函數的設定很靈活,只要使得任何關鍵字由此所得的哈希函數值都落在表長允許的范圍之內即可;
因為新的索引對舊的索引進行了空間上的壓縮,所以不可能所有的輸入都只對應唯一一個輸出,也就是哈希函數式有可能發生沖突的,哈希函數不可能做成一對一的映射關系,其本質是一個多對一的映射。
直接定址法:很容易理解,key=Value+C; 這個「C」是常量。Value+C其實就是一個簡單的哈希函數。
除法取余法: 很容易理解, key=value%C;解釋同上。
數字分析法:這種蠻有意思,比如有一組value1=112233,value2=112633,value3=119033,針對這樣的數我們分析數中間兩個數比較波動,其他數不變。那麼我們取key的值就可以是key1=22,key2=26,key3=90。
平方取中法。此處忽略,見名識意。
折疊法:這種蠻有意思,比如value=135790,要求key是2位數的散列值。那麼我們將value變為13+57+90=160,然後去掉高位「1」,此時key=60,哈哈,這就是他們的哈希關系,這樣做的目的就是key與每一位value都相關,來做到「散列地址」盡可能分散的目地。
當兩個不同的數據元素的哈希值相同時,就會發生沖突。解決沖突常用的手法有2種:
開放地址法:
如果兩個數據元素的哈希值相同,則在哈希表中為後插入的數據元素另外選擇一個表項。當程序查找哈希表時,如果沒有在第一個對應的哈希表項中找到符合查找要求的數據元素,程序就會繼續往後查找,直到找到一個符合查找要求的數據元素,或者遇到一個空的表項。
鏈接法:
將哈希值相同的數據元素存放在一個鏈表中,在查找哈希表的過程中,當查找到這個鏈表時,必須採用線性查找方法。
python的dict採用了哈希表,最低能在 O(1)時間內完成搜索,在發生哈希沖突的時候採用的是開放定址法。java的HashMap也是採用了哈希表實現,但是在發生哈希沖突的時候採用的是鏈接法。
『叄』 Python中的dict怎麼用
python中的dict使用方法類似php的關聯數組,java的map。
#定義一個dict
m={}
或者
m=dict()
#添加元素
m['a']=1
#更新元素
m['a']=2
#刪除元素
delm['a']
更多的你可以參考官方文檔:
https://docs.python.org/2/library/stdtypes.html
5.8. Mapping Types — dict
如果解決了您的問題請採納!
如果未解決請繼續追問!
『肆』 Python.如何向字典dict里加入內容a
1、創建字典
dict={'d':1,'b':2,'c':3}
2、添加內容a
>>>dict['a']=500
>>>a
{'d':1,'b':2,'c':3,'a':500}『
python的設計哲學是「優雅」、「明確」、「簡單」。因此,Perl語言中「總是有多種方法來做同一件事」的理念在Python開發者中通常是難以忍受的。
Python開發者的哲學是「用一種方法,最好是只有一種方法來做一件事」。在設計Python語言時,如果面臨多種選擇,Python開發者一般會拒絕花俏的語法,而選擇明確的沒有或者很少有歧義的語法。
由於這種設計觀念的差異,Python源代碼通常被認為比Perl具備更好的可讀性,並且能夠支撐大規模的軟體開發。這些准則被稱為Python格言。在Python解釋器內運行import this可以獲得完整的列表。
(4)pythondict增加元素擴展閱讀:
PYTHON的特點
Python開發人員盡量避開不成熟或者不重要的優化。一些針對非重要部位的加快運行速度的補丁通常不會被合並到Python內。
所以很多人認為Python很慢。不過,根據二八定律,大多數程序對速度要求不高。在某些對運行速度要求很高的情況,Python設計師傾向於使用JIT技術,或者用使用C/C++語言改寫這部分程序。可用的JIT技術是PyPy。
Python是完全面向對象的語言。函數、模塊、數字、字元串都是對象。並且完全支持繼承、重載、派生、多繼承,有益於增強源代碼的復用性。
Python支持重載運算符和動態類型。相對於Lisp這種傳統的函數式編程語言,Python對函數式設計只提供了有限的支持。有兩個標准庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數式程序設計工具。
雖然Python可能被粗略地分類為「腳本語言」(script language),但實際上一些大規模軟體開發計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。
Python的支持者較喜歡稱它為一種高級動態編程語言,原因是「腳本語言」泛指僅作簡單程序設計任務的語言,如shellscript、VBScript等只能處理簡單任務的編程語言,並不能與Python相提並論。
Python本身被設計為可擴充的。並非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語言、C++、Cython來編寫擴充模塊。Python編譯器本身也可以被集成到其它需要腳本語言的程序內。
因此,很多人還把Python作為一種「膠水語言」(glue language)使用。使用Python將其他語言編寫的程序進行集成和封裝。在Google內部的很多項目,例如Google Engine使用C++編寫性能要求極高的部分,然後用Python或Java/Go調用相應的模塊。
《Python技術手冊》的作者馬特利(Alex Martelli)說:「這很難講,不過,2004 年,Python 已在Google內部使用,Google 召募許多 Python 高手,但在這之前就已決定使用Python,他們的目的是 Python where we can, C++ where we must,在操控硬體的場合使用 C++,在快速開發時候使用 Python。」
參考資料:python-語言參考
『伍』 python如何將列表中的元素添加進字典
字典是一種hash表,即有key,和key鍵對應下的value
比如說我要初始化一個字典
phonebook={'Alice':'3241','Beth':'9274','Ceil':'3258'}
這樣這本字典就有三對項,分別有鍵(key)和對應的值(value)組成
比如這里Alice,Beth,Ceil都是key
對應的value則分別為3241,9274,3258
key和value之間用冒號(:)隔開,項之間用逗號(,)隔開,整個字典由一對大括弧括起來。
比如你要查詢beth的電話號碼,就可以用這條語句:
print phonebook['Beth']
結果則為9274
現在對字典的基本概念熟悉了吧?!
然後回答下你這個問題。
你要把列表中的元素添加到字典中,那麼必須提供key值或value來和d中的{'a','b','c'}對應。
一樓就是其中一個解法,不過有些瑕疵,正確的應該是:
a=dict(zip(d, ['']*3))
a的值即為{'a':'', 'b':'', 'c':''}
此時列表中的元素a,b,c作為key,value的值我們暫定為空
『陸』 Python初學(十九)
「鍵值對」是組織數據的一種重要方式,廣泛應用在Web系統中。鍵值對的基本思想是將「值」信息關聯一個「鍵」信息,進而通過鍵信息查找對應值信息,這個過程叫映射。Python語言中通過字典類型實現映射。
Python語言中的字典使用大括弧{}建立,每個元素是一個鍵值對,使用方式如下:
{<鍵1>:<值1>, <鍵2>:<值2>, ... , <鍵n>:<值n>}
其中,鍵和值通過冒號連接,不同鍵值對通過逗號隔開。字典類型也具有和集合類似的性質,即鍵值對之間沒有順序且不能重復。
列表類型採用元素順序的位置進行索引。由於字典元素「鍵值對」中鍵是值的索引,因此,可以直接利用鍵值對關系索引元素。
字典中鍵值對的索引模式如下,採用中括弧格式:
<值> = <字典變數>[<鍵>]
print(d[『201801』])
輸出的也就是: 小明
使用大括弧可以創建字典。通過索引和賦值配合,可以向字典中增加元素。
字典是存儲可變數量鍵值對的數據結構,鍵和值可以是任意數據類型,通過鍵索引值,並可以通過鍵修改值。
字典類型有一些通用的操作函數
dict()函數用於生成一個空字典,作用和{}一致
字典類型存在一些操作方法,使用語法形式是:
<字典變數>.<方法名稱>(<方法參數>)
d.keys()返回字典中的所有鍵信息,返回結果是Python的一種內部數據類型dict_keys,專用於表示字典的鍵。如果希望更好的使用返回結果,可以將其轉換為列表類型。
d.values()返回字典中的所有值信息,返回結果是Python的一種內部數據類型dict_values。如果希望更好的使用返回結果,也可以將其轉換為列表類型。
d.items()返回字典中的所有鍵值對信息,返回結果是Python的一種內部數據類型dict_items。當然也可以轉成列表類型 即: list(d.items())
d.get(key, default)根據鍵信息查找並返回值信息,如果key存在則返回相應值,否則返回默認值,第二個元素default可以省略,如果省略則默認值為空。 例如: 就拿上邊的數組d 來說 d.get(『201801』,「不存在」) 相當於一個if語句 如果key 201801 存在 就返回201801 values 不存在就返回 默認值 不存在
d.pop(key, default)根據鍵信息查找並取出值信息,如果key存在則返回相應值,否則返回默認值,第二個元素default可以省略,如果省略則默認值為空。相比d.get()方法,d.pop()在取出相應值後,將從字典中刪除對應的鍵值對。 和d.get方法類似
d.popitem()隨機從字典中取出一個鍵值對,以元組(key,value)形式返回。取出後從字典中刪除這個鍵值對。
d.clear()刪除字典中所有鍵值對。
此外,如果希望刪除字典中某一個元素,可以使用Python保留字del。 即: del d[key]
字典類型也支持保留字in,用來判斷一個鍵是否在字典中。如果在則返回True,否則返回False。
與其他組合類型一樣,字典可以遍歷循環對其元素進行遍歷,基本語法結構如下:
for <變數名> in <字典名>
<語句塊>
for循環返回的變數名是字典的索引值。如果需要獲得鍵對應的值,可以在語句塊中通過get()方法獲得。
以上就是本章的所有內容,感謝大家.
Python 學習的基礎(持續更新中......)
『柒』 python中怎樣在dict的一個key下新添加一個value
如果沒有這個key
直接添加值dict[k1]=v1
如果存在key,並且對應的值是個list類型
可以直接dict[k1].append(v1)
如果存在key,並且對應的值是一個簡單的元素
那就沒辦法添加了
『捌』 Python中向字典中添加元素語法的參數有哪些呢
方法可能有很多,但我先說一個最簡單的吧:
要向字典添加元素,首先得有一個字典,假設做一個學生的數學成績:
math_score = {}
然後就可以直接將key和對應的value按賦值的方式加上去:
math_score['張三'] = 90
這樣就ok了