① python中的字典是什麼
字典(Dictionary)
字典也是Python語言中經常使用的一種數據類型。跟列表類似,字典是另外一種可存儲任意類型的數據,並且字典儲存的數據也是可以修改的。
不同於列表的是,字典每個基本元素都包括兩個部分:鍵(key) 和 鍵對應的值(value)。
鍵和值之間用冒號(:)分割,每對元素之間用逗號(,)分割,整個字典的數據在大括弧{}中,格式如下所示:
在字典中,鍵的內容是不可重復的。鍵為不可變數據類型,值可以是任何數據類型。在這里,鍵只支持字元串類型。
字典最大的優勢就是能在海量數據下利用「鍵」快速查找出想要的值,當有很多數據需要存儲的時候,我們給每個值都打個標簽,也就是「鍵」;想要調用這個值時,字典能夠利用這個標簽快速幫我們找到它。但是如果標簽重復了,字典不知道哪個值才是對的,就會報錯哦~
列表是根據排序來記錄每項的值,但是字典是沒有順序的,所以同一字典,每次列印出的排序可能是不同的。「鍵」才是調用字典的關鍵元素。
字典是基礎的數據類型,所以變數也可以被賦值為字典。
② python 怎麼給字典添加一對值
如果只是添加一次,
>>>
l
=
['01',
'張三']
>>>
dic
=
{}
>>>
dic[l[0]]
=
l[1]
如果有大量的這種二元列表要添加到字典中,那麼
>>>
data
=
[['01',
'張三'],
['02',
'李四'],
['03',
'None']]
>>>
dic
=
dict(data)
輸入
>>>help(dict)
可以看到如下解釋:
dict(iterable)
->
new
dictionary
initialized
as
if
via:
|
d
=
{}
|
for
k,
v
in
iterable:
|
d[k]
=
v
傳入參數是二元可迭代對象(二元元組、列表等)時,形成對應鍵值對
③ 求助:python 二級字典如何快速排序
def sbv0(adict,reverse=False):
return sorted(adict.iteritems(), key=lambda (k,v): (v,k), reverse=reverse)
def sbv1(d,reverse=False):
L = [(k,v) for (k,v) in d.iteritems()]
return sorted(L, key=lambda x: x[1] , reverse=reverse)
def sbv2(d,reverse=False):
L = ((k,v) for (k,v) in d.iteritems())
return sorted(L, key=lambda x: x[1] , reverse=reverse)
def sbv3(d,reverse=False):
return sorted(d.iteritems(), key=lambda x: x[1] , reverse=reverse)
def sbv4(d,reverse=False):
def sk(x):
return x[1]
return sorted(d.iteritems(), key=sk , reverse=reverse)
def sk(x):
return x[1]
def sbv5(d,reverse=False):
return sorted(d.iteritems(), key=sk , reverse=reverse)
from operator import itemgetter
def sbv6(d,reverse=False):
return sorted(d.iteritems(), key=itemgetter(1), reverse=True)
D = dict(zip(range(100),range(100)))
from profile import run
for ii in xrange(10000):
sbv6(D, reverse=True)
#run(for ii in xrange(10000): sbv0(D, reverse=True))
#run(for ii in xrange(10000): sbv1(D, reverse=True))
#run(for ii in xrange(10000): sbv2(D, reverse=True))
#run(for ii in xrange(10000): sbv3(D, reverse=True))
#run(for ii in xrange(10000): sbv4(D, reverse=True))
#run(for ii in xrange(10000): sbv5(D, reverse=True))
#run(for ii in xrange(10000): sbv6(D, reverse=True))
④ python修改二元字典數據出錯是什麼原因
要把代碼發現來才知道,以下是常見的錯誤 下面終於要講到當你用到更多的Python的功能(數據類型,函數,模塊,類等等)時可能碰到的問題了。由於篇幅有限,這里盡量精簡,尤其是對一些高級的概念。要想了解更多的細節,
⑤ python字典的特點和用處
字典的特點:
字典的每個健值的展現方式是:key:value用冒號分割;鍵值之間為逗號分割;整個字典用大括弧{}將鍵值括起來;
鍵值可以是任意類型的對象;
鍵必須是唯一的;
鍵是不可變的;
字典的作用:
字典(日常生活中的字典和Python字典)旨在讓你能夠輕松地找到特定的單詞(鍵),以獲悉其定義(值)。
在很多情況下,使用字典都比使用列表更合適。下面是Python字典的一些用途:
表示棋盤的狀態,其中每個鍵都是由坐標組成的元組;
存儲文件修改時間,其中的鍵為文件名;
數字電話/地址簿。
⑥ Python 兩個字典的鍵和值如何轉換
使用map從一個列表映射到另一個列表:
a={'1':'張三',
....'2':'李四',
....'3':'王五'}
b = {'text':[1,2,3],
....'text2':[1,3]}
c = {}
for k,v in b.items():
....c[k] = list(map(lambda _:a[str(_)], v))
print(c)
⑦ python中,怎麼做個字典,數句子中單詞出現的次數
text = raw_input("enter a sentence:")
words = text.split()
wordscount = [words.count(elem) for elem in words]
worddict={map(None,words,wordscount)}
要完成你的目標:
我要
計算每個詞語出現的次數,
把詞語出現的次數和詞語列表組合成字典;
偽代碼出來了,程序也就有了....
python有著強大的列表解析,內建模塊使用C完成,他們很快,所以能夠調用內建模塊你就不要自己多事。
盡量按照偽代碼去完成程序,除非必須細化,否則讓python為你操作低層吧,他很聰明
第三句釋義:
對於列表元素計數有很簡單的list.count()方法。
這個語句就是利用了這個,statement for element in list fileter expression這是list的解析式。
通過這個你可以方便的將一個list解析為另一個。這一句就對list中所有的元素運用count()方法,並且建立新的list。
另外一個例子:a=[2,3,4,7,8]找到這個list中的偶數,並得到它們的平方列表
這樣寫:[elem*elem for elem in a if elem%2==0]
第四句釋義:
list有個map方法,它可以提供list的映射。map(statement,list1,list2)就是將list1,list2按照statement規則映射。我的表達式是none所以得到的結果就是簡單的[('this', 3), ('is', 4), ('a', 1)]這樣的二元tuple列表。
dict函數則是針對上述list的。它能把上述list轉化為字典。
這在你做數據處理時很有好處,你可以很輕松的建立一個hash表。
python的強大在於簡明,遇到程序嘗試著用最簡單地方法去解決,你會很快喜歡上的。
以上^樂於與您交流
⑧ Python中創建字典的幾種方法總結
1.傳統的文字表達式:
>>>d={'name':'Allen','age':21,'gender':'male'}
>>>d
{'age':21,'name':'Allen','gender':'male'}
如果你可以事先拼出整個字典,這種方式是很方便的。
2.動態分配鍵值:
>>>d={}
>>>d['name']='Allen'
>>>d['age']=21
>>>d['gender']='male'
>>>d
{'age':21,'name':'Allen','gender':'male'}
如果你需要一次動態地建立一個字典的一個欄位,那麼這種方式比較合適。
字典與列表不同,不能通過偏移量進行復制,只能通過鍵來讀取或賦值,所以也可以這樣為字典賦值,當然訪問不存在的鍵會報錯:
>>>d[1]='abcd'
>>>d
{1:'abcd','age':21,'name':'Allen','gender':'male'}
>>>d[2]
Traceback(mostrecentcalllast):
File"<pyshell#9>",line1,in<mole>d[2]
KeyError:212345678
3.字典鍵值表
>>>c=dict(name='Allen',age=14,gender='male')
>>>c
{'gender':'male','name':'Allen','age':14}
因為這種形式語法簡單,不易出錯,所以非常流行。
這種形式所需的代碼比常量少,但是鍵必須都是字元串才行,所以下列代碼會報錯:
>>>c=dict(name='Allen',age=14,gender='male',1='abcd')
SyntaxError:keywordcan'tbeanexpression
4.字典鍵值元組表
>>>e=dict([('name','Allen'),('age',21),('gender','male')])
>>>e
{'age':21,'name':'Allen','gender':'male'}
如果你需要在程序運行時把鍵和值逐步建成序列,那麼這種方式比較有用。
5.所有鍵的值都相同或者賦予初始值:
>>>f=dict.fromkeys(['height','weight'],'normal')
>>>f
{'weight':'normal','height':'normal'}
⑨ 如何用python寫入兩個字典,即兩個{}
你只mp了一個data,test_results並沒有。可以再json.mp(test_results,f)然後再f.clost()
mp兩次,讀的時候也要load兩次
或者
把data和test_results賦給另一個變數n,json.mp(n,f)不就結了
⑩ python中字典里的循環
你的names應該是一個(存放著二元組或者二元列表的)列表或者元祖,比如[[1,2]],你的代碼就是把它變成了[{"companyId":1,"name":2}]這種內部元素是字典的列表