1. python 列表內有字典怎麼使用
Python字典是另一種可變容器模型,且可存儲任意類型對象,如字元串、數字、元組等其他容器模型。
一、創建字典
字典由鍵和對應值成對組成。字典也被稱作關聯數組或哈希表。基本語法如下:
復制代碼代碼如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
也可如此創建字典:
復制代碼代碼如下:
dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };
注意:
每個鍵與值用冒號隔開(:),每對用逗號,每對用逗號分割,整體放在花括弧中({})。
鍵必須獨一無二,但值則不必。
值可以取任何數據類型,但必須是不可變的,如字元串,數或元組。
二、訪問字典里的值
把相應的鍵放入熟悉的方括弧,如下實例:
復制代碼代碼如下:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
#以上實例輸出結果:
#dict['Name']: Zara
#dict['Age']: 7
如果用字典里沒有的鍵訪問數據,會輸出錯誤如下:
復制代碼代碼如下:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Alice']: ", dict['Alice'];
#以上實例輸出結果:
#dict['Zara']:
#Traceback (most recent call last):
# File "test.py", line 4, in <mole>
# print "dict['Alice']: ", dict['Alice'];
#KeyError: 'Alice'[/code]
三、修改字典
向字典添加新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實例:
復制代碼代碼如下:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
#以上實例輸出結果:
#dict['Age']: 8
#dict['School']: DPS School
四、刪除字典元素
能刪單一的元素也能清空字典,清空只需一項操作。
顯示刪除一個字典用del命令,如下實例:
復制代碼代碼如下:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 刪除鍵是'Name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
#但這會引發一個異常,因為用del後字典不再存在:
dict['Age']:
#Traceback (most recent call last):
# File "test.py", line 8, in <mole>
# print "dict['Age']: ", dict['Age'];
#TypeError: 'type' object is unsubscriptable
五、字典鍵的特性
字典值可以沒有限制地取任何python對象,既可以是標準的對象,也可以是用戶定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,後一個值會被記住,如下實例:
復制代碼代碼如下:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
print "dict['Name']: ", dict['Name'];
#以上實例輸出結果:
#dict['Name']: Manni
2)鍵必須不可變,所以可以用數,字元串或元組充當,所以用列表就不行,如下實例:
復制代碼代碼如下:
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7};
print "dict['Name']: ", dict['Name'];
#以上實例輸出結果:
#Traceback (most recent call last):
# File "test.py", line 3, in <mole>
# dict = {['Name']: 'Zara', 'Age': 7};
#TypeError: list objects are unhashable
六、字典內置函數&方法
Python字典包含了以下內置函數:
1、cmp(dict1, dict2):比較兩個字典元素。
2、len(dict):計算字典元素個數,即鍵的總數。
3、str(dict):輸出字典可列印的字元串表示。
4、type(variable):返回輸入的變數類型,如果變數是字典就返回字典類型。
Python字典包含了以下內置方法:
1、radiansdict.clear():刪除字典內所有元素
2、radiansdict.():返回一個字典的淺復制
3、radiansdict.fromkeys():創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
4、radiansdict.get(key, default=None):返回指定鍵的值,如果值不在字典中返回default值
5、radiansdict.has_key(key):如果鍵在字典dict里返回true,否則返回false
6、radiansdict.items():以列表返回可遍歷的(鍵, 值) 元組數組
7、radiansdict.keys():以列表返回一個字典所有的鍵
8、radiansdict.setdefault(key, default=None):和get()類似, 但如果鍵不已經存在於字典中,將會添加鍵並將值設為default
9、radiansdict.update(dict2):把字典dict2的鍵/值對更新到dict里
10、radiansdict.values():以列表返回字典中的所有值
2. python字典 相同KEY整成一個列表
由於些軟體無法正常輸出所需格式樣式,只能截圖給你。
圖1為代碼,圖2為效果。
3. 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的值我們暫定為空
4. python列表中字典按指定相同的鍵值對合並到一個列表中
使用集合去重 + local動態變數設置 + exec 字元串解析 可實現,話不多說,代碼在下面,格式有問題調整下空格:
list_msg = [{'date':'2019-08-17', 'type':'旅遊', 'over_im':'12365'},
{'date':'2019-08-17', 'type':'haha', 'over_im':'12365'},
{'date':'2019-08-18', 'type':'娛樂', 'over_im':'11234'},{'date':'2019-08-19', 'type':'生活', 'over_im':'9532'},]
# 去除字典重復的data ,獲取數據包含多少天內容
set_mark = {i['date'] for i in list_msg}
# 去除非法命名字元作為列表後綴:
ver_name = [i.replace('-','_') for i in set_mark]
# 給列表排序,確保按照順序輸出變數
ver_name.sort()
# 設置動態命名模板
list_name_template = 'list_data_'
# 創建local對象,准備創建動態變數
createver = locals()
# 循環遍歷數據並創建動態列表變數接收
for mark in set_mark:
# 動態創建變數
createver[list_name_template + mark.replace('-','_')] \
= [dict_current for dict_current in list_msg if dict_current['date'] == mark]
for name in ver_name:
print(list_name_template + name + ':' ,end='\t') # 列印自動創建的變數名稱,採用tab分隔
exec('print('+list_name_template + name +')') # 列印變數內容(列表)
'''
列印結果
list_data_2019_08_17: [{'date': '2019-08-17', 'type': '旅遊', 'over_im': '12365'}, {'date': '2019-08-17', 'type': 'haha', 'over_im': '12365'}]
list_data_2019_08_18: [{'date': '2019-08-18', 'type': '娛樂', 'over_im': '11234'}]
list_data_2019_08_19: [{'date': '2019-08-19', 'type': '生活', 'over_im': '9532'}]
'''
5. 在python中健與值的數量不一樣如何創建字典
摘要 python---創建字典的方式
6. python字典列表和列表字典
最本質的區別:第一種方法得出的a是列表,而第二種的a是字典
用python語句表達來看就是:
1.type(a) == list
2.type(a) == dict
在互動式界面下顯示:
第一種:
>>> a
[{'name':'fokil'}]
此時a是一個列表,他具有列表的一切方法和屬性,但不具備任何字典的方法和屬性。列表可以有N個元素,元素的類型是任意的,與列表本身無關。而此時的a有一個元素,該元素是一個字典——但這並不代表整個列表a帶有任何字典的性質。明白?
第二種:
>>> a
{'name':['fokil']}
同上,此時a是一個字典,具有字典的一切方法和屬性,但不具備任何列表的方法和屬性。字典可以有N個元素,每個元素由一對key和內容的組合構成。key可以是任何單一對象的類型(不能是列表或字典——但可以是元組。當然,還可以是數字、字元/字元串,甚至是文件對象),而key對應的內容則可以是任意類型的。在此時,a中只有一個元素,key是一個字元串,而內容則是一個含有一個字元串元素的列表——同樣,這不意味著a具有任何的列表性質
總而言之,嚴格的講:沒有「字典列表」或「列表字典」這種概念
只有一個列表,他包含的元素的類型是字典——當然,列表中的元素可以是不同類型的,譬如:
a = [1, 'test', [2,3,4], {'name':'fokil'}]
同理,只有一個字典,他包含的元素中的一部分是列表(當然,key部分不可能是列表)。當然,也有可能是不同類型的元素:
a = {1:'b',(1,2,3):[4,5,6],'test':{'test2':['test3']}}
7. python中字典的鍵值不能是列表嗎
列表可以做字典的值,但是不能做鍵,因為列表是可變的,而鍵要求不可變對象
8. python 字典key是列表,轉成字典
#!/usr/bin/envpython2
#coding=utf-8
"""
convertsomedataformat
"""
deflist_to_dict(rating):
return{'uid':rating[0],
'movieid':rating[1],
'rating':rating[2],
'time':rating[3]}
defconvert_train(train):
fork,ratingsintrain.iteritems():
train[k]=[list_to_dict(rating)forratinginratings]
returntrain
defmain():
r=convert_train({'uid1':[['uid1','movieid1','rating1','time1'],
['uid1','movieid2','rating2','time2'],
['uid1','movieid3','rating3','time3']]})
printr
if__name__=='__main__':
main()
9. 如何用python製作特定文章的字典
1、傳統的文字表達式:
123
>>> d={'name':'Allen','age':21,'gender':'male'}>>> d{'age': 21, 'name': 'Allen', 'gender': 'male'}
如果你可以事先拼出整個字典,這種方式是很方便的。
2、動態分配鍵值:
123456
>>> d={}>>> d['name']='Allen'>>> d['age']=21>>> d['gender']='male'>>> d{'age': 21, 'name': 'Allen', 'gender': 'male'}
如果你需要一次動態地建立一個字典的一個欄位,那麼這種方式比較合適。
字典與列表不同,不能通過偏移量進行復制,只能通過鍵來讀取或賦值,所以也可以這樣為字典賦值,當然訪問不存在的鍵會報錯:
12345678
>>> d[1]='abcd'>>> d{1: 'abcd', 'age': 21, 'name': 'Allen', 'gender': 'male'}>>> d[2]Traceback (most recent call last): File "<pyshell#9>", line 1, in <mole> d[2]KeyError: 2
3、字典鍵值表
123
>>> c = dict(name='Allen', age=14, gender='male')>>> c{'gender': 'male', 'name': 'Allen', 'age': 14}
因為這種形式語法簡單,不易出錯,所以非常流行。
這種形式所需的代碼比常量少,但是鍵必須都是字元串才行,所以下列代碼會報錯:
12
>>> c = dict(name='Allen', age=14, gender='male', 1='abcd')SyntaxError: keyword can't be an expression
4、字典鍵值元組表
123
>>> e=dict([('name','Allen'),('age',21),('gender','male')])>>> e{'age': 21, 'name': 'Allen', 'gender': 'male'}
如果你需要在程序運行時把鍵和值逐步建成序列,那麼這種方式比較有用。
5、所有鍵的值都相同或者賦予初始值:
123
>>> f=dict.fromkeys(['height','weight'],'normal')>>> f{'weight': 'normal', 'height': 'normal'}
以上這篇Python中創建字典的幾種方法總結(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。