python3dictkey
A. python3 defaultdict 和 dict的區別
yangyzh
Python中dict詳解
python3.0以上,print函數應為print(),不存在dict.iteritems()這個函數。
在python中寫中文注釋會報錯,這時只要在頭部加上# coding=gbk即可
#字典的添加、刪除、修改操作
dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
dict["w"] = "watermelon"
del(dict["a"])
dict["g"] = "grapefruit"
print dict.pop("b")
print dict
dict.clear()
print dict
#字典的遍歷
dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for k in dict:
print "dict[%s] =" % k,dict[k]
#字典items()的使用
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
#每個元素是一個key和value組成的元組,以列表的方式輸出
print dict.items()
#調用items()實現字典的遍歷
dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for (k, v) in dict.items():
print "dict[%s] =" % k, v
#調用iteritems()實現字典的遍歷
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print dict.iteritems()
for k, v in dict.iteritems():
print "dict[%s] =" % k, v
for (k, v) in zip(dict.iterkeys(), dict.itervalues()):
print "dict[%s] =" % k, v
#使用列表、字典作為字典的值
dict = {"a" : ("apple",), "bo" : {"b" : "banana", "o" : "orange"}, "g" : ["grape","grapefruit"]}
print dict["a"]
print dict["a"][0]
print dict["bo"]
print dict["bo"]["o"]
print dict["g"]
print dict["g"][1]
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
#輸出key的列表
print dict.keys()
#輸出value的列表
print dict.values()
#每個元素是一個key和value組成的元組,以列表的方式輸出
print dict.items()
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
it = dict.iteritems()
print it
#字典中元素的獲取方法
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print dict
print dict.get("c", "apple")
print dict.get("e", "apple")
#get()的等價語句
D = {"key1" : "value1", "key2" : "value2"}
if "key1" in D:
print D["key1"]
else:
print "None"
#字典的更新
dict = {"a" : "apple", "b" : "banana"}
print dict
dict2 = {"c" : "grape", "d" : "orange"}
dict.update(dict2)
print dict
#udpate()的等價語句
D = {"key1" : "value1", "key2" : "value2"}
E = {"key3" : "value3", "key4" : "value4"}
for k in E:
D[k] = E[k]
print D
#字典E中含有字典D中的key
D = {"key1" : "value1", "key2" : "value2"}
E = {"key2" : "value3", "key4" : "value4"}
for k in E:
D[k] = E[k]
print D
#設置默認值
dict = {}
dict.setdefault("a")
print dict
dict["a"] = "apple"
dict.setdefault("a","default")
print dict
#調用sorted()排序
dict = {"a" : "apple", "b" : "grape", "c" : "orange", "d" : "banana"}
print dict
#按照key排序
print sorted(dict.items(), key=lambda d: d[0])
#按照value排序
print sorted(dict.items(), key=lambda d: d[1])
#字典的淺拷貝
dict = {"a" : "apple", "b" : "grape"}
dict2 = {"c" : "orange", "d" : "banana"}
dict2 = dict.()
print dict2
#字典的深拷貝
import
dict = {"a" : "apple", "b" : {"g" : "grape","o" : "orange"}}
dict2 = .deep(dict)
dict3 = .(dict)
dict2["b"]["g"] = "orange"
print dict
dict3["b"]["g"] = "orange"
print dict
補充:
1 初始化
>>> d = dict(name='visaya', age=20)
>>> d = dict(zip(['name', 'age'], ['visaya', 20]))
#dict.fromkeys(listkeys, default=0) 把listkeys中的元素作為key均賦值為value,默認為0
>>> d = dict.fromkeys(['a', 'b'], 1)
>>> d
{'a': 1, 'b': 1}
2 字典視圖和幾何
dict.keys()類似信使可以進行交集和並集等集合操作(類似集合,因為不存在重復的項),但dict.values()不可以進行如上操作。
>>> k = d.keys()
>>> k
dict_keys(['a', 'b'])
>>> list(k)
['a', 'b']
>>> k | {'x': 3}
{'a', 'x', 'b'}
>>> k | {'x'}
{'a', 'x', 'b'}
>>> k | {'x', 'y'}
{'a', 'y', 'b', 'x'}
>>> k & {'x'}
set()
>>> v = d.values()
>>> v
dict_values([1, 2])
>>> v | {'x'}
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
TypeError: unsupported operand type(s) for |: 'dict_values' and 'set'
3 排序字典鍵
兩種方法:
3.1 sort:
>>> Ks = list(d.keys())
>>> Ks.sort()
>>> for k in Ks:
... print(k, d[k])
...
a 1
b 2
3.2 sorted:
>>> for k in sorted(d.keys()):
... print(k, d[k])
...
a 1
b 2
3.3 注意
>>> for k in list(d.keys()).sort():
... print(k, d[k])
...
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
TypeError: 'NoneType' object is not iterable
出錯原因:
list.sort() list.append()函數都是對自身的操作,沒有返回值,故需先將list(d.keys())的結果保存下來,在結果上進行sort()
4 常用函數
4.1 get()
D.get(k[, d]) => D[k] if k in D else d. d defaults to none.
4.2 pop()
D.pop(value[, d]) => Remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised.
4.3 udpate()
D.update(E, **F) -> None. Update D from dict/iterable E and F.
If E has a .keys() method, does: for k in E: D[k] = E[k]
If E lacks .keys() method, does: for (k, v) in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]
>>> d = dict(name='visaya', age=21)
>>> d1= {'age': 20, 'sex': 'male'}
>>> d2 = zip(['a', 'b'], [1, 2])
>>> d.update(d1)
>>> d
{'age': 20, 'name': 'visaya', 'sex': 'male'}
#for k in d1: d[k] = d1[k]
>>> d.update(d2)
>>> d
{'age': 20, 'name': 'visaya', 'sex': 'male'}
#for (k, v) in d2: d[k] = v
4.4 del()
del D[key]
4.5 clear()
4.6 ()
Python中的dict
初始化
構造方法創建
Python代碼
d = dict()
d = dict(name="nico", age=23)
d = dict((['name', "nico"], ['age', 23]))
當然還有更方便,簡單的
Python代碼
d = {}
d = {"name":"nico", "age":23}
遍歷
通過對key的遍歷,遍歷整個dict
Python代碼
d = {"name":"nico", "age":23}
for key in d:
print "key=%s, value=%s" % (key, d[key])
for key in d.iterkeys():
print "key=%s, value=%s" % (key, d[key])
for key in d.keys():
print "key=%s, value=%s" % (key, d[key])
for key in iter(d):
print "key=%s, value=%s" % (key, d[key])
for key,item in d.items():
print "key=%s, value=%s" % (key, item)
當然也可以直接遍歷value
Python代碼
d = {"name":"nico", "age":23}
for value in d.values():
print value
for key,value in d.viewitems():
print "key=%s, value=%s" % (key, value)
for value in d.viewvalues():
print "value=%s" % (value)
這里values和viewvalues的區別
後者返回的是該字典的一個view對象,類似資料庫中的view,當dict改變時,該view對象也跟著改變
常用方法
Python代碼
d = {"name":"nico", "age":23}
d["name"] = "aaaa"
d["address"] = "abcdefg...."
print d #{'age': 23, 'name': 'aaaa', 'address': 'abcdefg....'}
獲取dict值
Python代碼
print d["name"] #nico
print d.get("name") #nico
如果key不在dict中,返回default,沒有為None
Python代碼
print d.get("namex", "aaa") #aaa
print d.get("namex") #None
排序sorted()
Python代碼
d = {"name":"nico", "age":23}
for key in sorted(d):
print "key=%s, value=%s" % (key, d[key])
#key=age, value=23
#key=name, value=nico
刪除del
Python代碼
d = {"name":"nico", "age":23}
Python代碼
del d["name"]
#如果key不在dict中,拋出KeyError
del d["names"]
Python代碼
Traceback (most recent call last):
File "F:\workspace\project\pydev\src\ddd\ddddd.py", line 64, in <mole>
del d["names"]
KeyError: 'names'
清空clear()
Python代碼
d = {"name":"nico", "age":23}
d.clear()
print d #{}
()
Python代碼
d1 = d.() #{'age': 23, 'name': 'nico'}
#使用返回view對象
d2 = d1.viewitems() #dict_items([('age', 23), ('name', 'nico')])
#修改字典d1,新增元素
d1["cc"] = "aaaaaa"
print d2
#dict_items([('cc', 'aaaaaa'), ('age', 23), ('name', 'nico')])
pop(key[, default])
如果key在dict中,返回,不在返回default
Python代碼
#如果key在dict中,返回,不在返回default
print d.pop("name", "niccco") #nico
print d.pop("namezzz", "niccco") #niccco
#key不在dict中,且default值也沒有,拋出KeyError
print d.pop("namezzz") #此處拋出KeyError
popitem()
刪除並返回dict中任意的一個(key,value)隊,如果字典為空會拋出KeyError
Python代碼
d = {"name":"nico", "age":23}
print d.popitem() #('age', 23)
print d.popitem() #('name', 'nico')
#此時字典d已為空
print d.popitem() #此處會拋出KeyError
update([other])
將字典other中的元素加到dict中,key重復時將用other中的值覆蓋
Python代碼
d = {"name":"nico", "age":23}
d2 = {"name":"jack", "abcd":123}
d.update(d2)
print d #{'abcd': 123, 'age': 23, 'name': 'jack'}
B. Python 字典(dic)操作
具體函數有 set(),pop(),update(),items(),keys(),values(),get(),setdefault()
python 字典操作
假設字典為 dics = {0:'a', 1:'b', 'c':3}
二是使用dict本身提供的一個 get 方法,在Key不存在的時候,返回None:
>>> print dics.get('a')
0
>>> print dics.get('Paul')
None
dict.get(key,default=None) 兩個選項 一個 key 一個 default= None ----default可以是任何strings(字元)
2.從字典中取值,若找到則刪除;當鍵不存在時,顯示異常key error
[方法] dics.pop('key')
3.給字典添加一個條目。如果不存在,就指定特定的值;若存在,就算了。
[方法] dic.setdefault(key, value)
4. update
>>> a = {'a':1,'b':2}
>>> a.update({'c':3})
>>>a
{'a': 1,'c': 3,'b': 2}
>>> a.update({'c':4})
>>>a
{'a': 1,'c': 4,'b': 2}
dict的作用是建立一組 key 和一組 value 的映射關系,dict的key是不能重復的。
有的時候,我們只想要 dict 的 key,不關心 key 對應的 value,目的就是保證這個集合的元素不會重復,這時,set就派上用場了。
C. Python中如何以dict的key排序輸出
#輸出的順序卻不是我們預想的那樣初始化的順序,查詢相關文獻得知,Python保證遍##歷字典所有元素,但不保證遍歷的順序,假如我們期望按預先的順序進行遍歷的話,#我目前找到一個辦法,就是通過兩個List分別存儲Key和Value,然後通過zip合並為Dic#tionary,再遍歷:
# 通過zip方法合並兩個List為Dictionary
# 遍歷會按原先的順序
keys = ["b", "a", "c", "e", "d"]
values = ["2", "1", "3", "5", "4"]
for key,value in zip(keys, values):
print(key,value)
# -- OUTPUT --
# b 2
# a 1
# c 3
# e 5
# d 4
D. python中怎麼取出字典的鍵
舉例如下:
1、新增python文件,testdictkey.py;
E. 請問python3中「構造函數 dict() 可以直接從鍵值對序列中構建字典如下」什麼意思
意思是可以這樣創建字典:
dict([('key1','value1'),('key2','value2')])
#等於下面
{
'key1':'value1',
'key2':'value2',
}
F. python字典中key怎麼表示區間
python字典中key怎麼表示區間,操作方法如下。
設備:mac
系統:ios15.4
軟體:python3
1、首先在電腦中,打開操作系統的命令行工具python。
G. python3在函數聲明裡如何設置參數的類型 dict
dict[]和dict.get兩個方法的區別吧 dict[key]:當key不存在的時候,會拋出異常 dict.get(key, defaut_value=None) 當key不存在的時候,不會拋出異常,而且會返回默認值
H. 如何使用Python3實現Dict字典的倒序輸出
dict是哈希實現的,不存在有序無序
想要實驗有序輸出,按list就行
ATLst = sorted(ATDict.items(),key=lambda x:x[0],reverse=True)
for item in ATLst:
print(items[0],items[1])
I. python3 判斷dict是否含有某元素
list = [1,'a','b',{'key':'value'}]
for i in range(0, list.__len__()):
#遍歷list的元素,print其類型
print type(list[i])
#判斷類型為str的元素,並輸出
print '類型為string的有:'
for i in range(0, list.__len__()):
if isinstance(list[i], str):
print type(list[i])
結果:
<type 'int'>
<type 'str'>
<type 'str'>
<type 'dict'>
類型為string的有:
<type 'str'>
<type 'str'>
J. python dict用法
dic= {key1 : value1, key2 : value2 }
字典也被稱作關聯數組或哈希表。下面是幾種常見的字典屬性:
1、dict.clear()
clear() 用於清空字典中所有元素(鍵-值對),對一個字典執行 clear() 方法之後,該字典就會變成一個空字典。
2、dict.()
() 用於返回一個字典的淺拷貝。
3、dict.fromkeys()
fromkeys() 使用給定的多個鍵創建一個新字典,值默認都是 None,也可以傳入一個參數作為默認的值。
4、dict.get()
get() 用於返回指定鍵的值,也就是根據鍵來獲取值,在鍵不存在的情況下,返回 None,也可以指定返回值。
5、dict.items()
items() 獲取字典中的所有鍵-值對,一般情況下可以將結果轉化為列表再進行後續處理。
6、dict.keys()
keys() 返回一個字典所有的鍵。