python3字典in
A. python3里關於字典的問題01
ifnameinzidian:
print(zidian[name])
else:
print('notfound')
B. python3 怎麼對字典編碼
字典的基本操作:
2.1、查詢
dic['key']
dic['name']
直接在字典裡面找KEY 取到value
列表的查詢:
print(dic["namee"])
沒有的話會直接報錯
但是字典get不會報錯
print(dic.get('naness'))
輸出none
2.2、增加
字典中添加是無序的添加
dic['gender']='female'
列表是有序的
2.3、改
dic['name'] = 'stone'
改的是value
2.4、刪除
del 萬能的
del dic['name']
字典裡面怎麼定義的key 調用的時候就是那麼寫
2.5、復制: 淺
dic1 = dic.()
print(dic1)
2.6、深入
import
dic3 = .deep(dic)
.是淺
2.7、快速生成字典fromkeys
dic= {'name':'stone','age':18}
data = dic.fromkeys([1,2,3])
print(date)
輸出:
{1: None, 2: None, 3: None}
生成的字典跟聲明的字典dic沒有關系
2.8、items
print(dic.items())
for i in dic.items():
print(i)
2.9、key value形式
keys將字典中所有的key取出
將所有的keys以列表的形式顯示出來
for i in dic.keys():
print('keys is %s,value is %s' %(i,dic[i]))
以列表和元組的形式顯示出來
2.10、刪除pop()
dic.pop(keys)
注意是只能是填寫keys
pop(keys)必須存在才能刪除
2.11、隨機刪除popitem()
隨機刪除key value
這個函數不需要函數隨機刪除
2.12、setdefault
dic.setdefault('gender',[]).append('mail') #dic['gender']=[]
或者是
dic['gender'].appemd('female')
2.13、更新update
方法一:
dic1={'gender':'male','name':'lhf'}
dic.update(dic1)
print(dic)
方法二:
可以根據key進行更新
dic.update(name='stone',gender='male')
print(dic)
2.14、values取所有的值
for i in dic.values(dic1)
print(i)
3、字典key的定義規則:
3.1、可變的原理:
通過id()進行內存調用查看是否是一個內存空間
字元串和數字是不可變的
列表:是可變的類型 是指列表裡麵包含的元素可變
3.2、key的定義規則
必須是不可變的,不可變的類型:數字,字元串,元組
通過內置方法hash 判斷一個數據類型是否可變
hash('sdfas')
-41789881
hash['s'] #hash 列表
Traceback (most recent call last):
File "
字典當中的key是唯一的:不能是重復的
判斷一個字典里有沒有這個值
菜單思路:
首先一個死循環
C. python中的list的in查找和dict中的in查找效率一樣嗎
效率是不一抄樣的,尤其是數據量襲大時很明顯.
這種效率的差異是由於二者的存儲結構不同.
list查找時,需要遍歷,這與其線性的存儲結構有關,因此數據量大時,就顯得慢了.且處於list中越靠後,查詢越慢;不在list中,更需遍歷所有元素,速度最慢.
而dict默認採用hash_map存儲,即使數據量很大,查找也非常快速.
D. python3列表根字典問題!
12345678910mobile=[['apple','ios','100','10'],['pear','android','200','20'],['apple','ios','500','50'],['pear','android','600','60']]mobiledict={}for elem in mobile: key=(elem[0],elem[1]) if key in mobiledict: mobiledict[key][0]+=int(elem[2]) mobiledict[key][1]+=int(elem[3]) else: mobiledict[key]=[int(elem[2]),int(elem[3])]print(mobiledict)
E. Python3 中的字典是有序字典嗎
Python編程將多個字典文件合並成一個字典文件,代碼如下:
//例子:合並a.txt和b.txt兩個字典文件版權
def readf(filename):
lines = file(filename).readlines()
dic = {}
for i in lines:
i_ = i.split()
dic[i_[0]] = int(i_[1])
return dic
dica = readf('a.txt')
dicb = readf('b.txt')
lines = []
for i in dica:
percent = str(float(dicb[i])*100/dica[i])+'%'
s = ' '.join([i, str(dica[i]), str(dicb[i]), percent])
s += '\n'
lines.append(s)
//合並成一個字典文件c.txt
with open('c.txt', 'w') as f:
f.writelines(lines)
f.close()
F. python3列表轉字典怎麼轉的
list=['1:23232','2:12328937','3:12837']
dic={}
foriteminlist:
keys=item.split(':')
dic.update({keys[0]:keys[1]})
print(dic)
G. python 實現字典嵌套字典
from collections import defaultdict
interface_all = defaultdict(dict)
for port in porttype:
interface_all[port]['status'] = 'up'
H. python3 如何解析多層嵌套字典,具體內容打開看
# 見 代碼 ,代碼粘貼上不帶格式,按照圖片用tab鍵調整一下,圖片是核心部分
simple_dict={
'Large_dict':{'middle_dict1':{'small_dict1':1,
'small_dict2':2},
'middle_dict2':{'small_dict3':3,
'small_dict4':4,
'small_dict5':{'small_dict10':1,
'small_dict22':3},
},
}
}
#需求分析:從嵌套字典中,找到值為3的路徑關系
#簡化模型:從value為3的值遞歸向上層的key,遞歸過程保存當前已經遞歸的路徑和當前層
#1.找到字典一共有多少層:
count=0
path=''#設置路徑的全局變數
result=[]#記錄結論
defget_count(dict_test):
globalcount#聲明每次遞歸均是改變全局變數
globalpath#拼接檔期啊你的路徑
globalresult#記錄結果
foriindict_test:
iftype(dict_test[i]).__name__=='dict':
#如果是字典,則繼續向下展開,即執行遞歸:
ifcount==0:#增加判斷消除第一個<-出現,邏輯問題
path=path+i
else:
path=path+'<-'+i
count+=1#記錄層數
get_count(dict_test[i])
else:
try:
#如果不是字典則是鍵值對,查詢value值是不是3,當前i包含兩個內容,一個是key,一個是value
ifdict_test[i]==3:
#找到了value=3的值
result.append(f"路徑是:%s,在第%d層"%(path+'<-'+i,count))
exceptExceptionasresult:#雖然字典限定了寫法,為了增加健壯性此位置使用try指令,避免類型錯誤
print(result)
continue
if__name__=='__main__':
get_count(simple_dict)#執行遞歸函數
[print(str(i+1)+':'+j)fori,jinenumerate(result)]#列印結果
'''
結果:
1:路徑是:Large_dict<-middle_dict1<-middle_dict2<-small_dict3,在第3層
2:路徑是:Large_dict<-middle_dict1<-middle_dict2<-small_dict5<-small_dict22,在第4層
'''
I. python怎樣獲取字典中前十個
由於字典長,我將前10個改為前5個,你只需要將,我回答中的4改為9就行。
例如字典
a={'the': 958035, 'of': 536684, 'and': 375233, 'one': 371796, 'in': 335503, 'a': 292250, 'to': 285093, 'zero': 235406, 'nine': 224705}
一:只想看看元素。如果字典很長,只想看前5個,可以先變成list,再取索引來看。利用了字典的items方法。
print(list(vocab.items())[:5]) # 先items取元素,再轉list,再切片取前5,最後print輸出
輸出為[('the', 958035), ('of', 536684), ('and', 375233), ('one', 371796), ('in', 335503)]
二。要獲取前5個元素。遍歷字典:
for i,(k,v) in enumerate(a.items()):
print({k:v},end="")
if i==4:
print()
break
輸出:{'the': 958035}{'of': 536684}{'and': 375233}{'one': 371796}{'in': 335503}
三。保持原來字典樣式,取前5個元素。
a={'the': 958035, 'of': 536684, 'and': 375233, 'one': 371796, 'in': 335503, 'a': 292250,
'to': 285093, 'zero': 235406, 'nine': 224705}
new_a = {}
for i,(k,v) in enumerate(a.items()):
new_a[k]=v
if i==4:
print(new_a)
break
輸出:{'the': 958035, 'of': 536684, 'and': 375233, 'one': 371796, 'in': 335503}
J. Python中如何獲取字典的子集
過濾制新建啊。
d1={'read':1,'blue':3,'black':4}
#d2包含了d1中所有key中含'a'的鍵與值
d2=dict((k,v)fork,vind1.items()if'a'ink)
print(d2)
#d3包含了d1中所有值為奇數的鍵與值
d3=dict((k,v)fork,vind1.items()ifv%2)
print(d3)