『壹』 python 檢測字典是否含有某個鍵值
同志,你這是字典嗎?有一個函數,你可以試試,是找出字典中的鍵值。 dit= {'a': 5, 'b': 6, 'c': 7} def sub_dict_select(somedict, somekeys): return dict([ (k, somedict[k]) for k in somekeys if k in somedict]) sub_dict_select
『貳』 python如何在列表,字典中篩選數據
假設那個字典叫dict:
if dict.has_key( line[0] ):
print dict[ line[0] ]
和列表一樣,用[ ]即可
『叄』 Python 中如何刪除字典元素
1、字典存儲的是一個對象的多種信息,但你也可以使用字典來存儲眾多對象的同一種信息。例如,假設你要調查很多人,詢問他們最喜歡的編程語言,可使用一個字典來存儲這種簡單調查的結果
如下所示:
代碼行讓Python將鍵'jen' 從字典favorite_languages中刪除,同時刪除與這個鍵相關聯的值。輸出表明,鍵'jen' 及其值'python'已從字典中刪除,但其他鍵—值對未受影響:
注意:刪除的鍵—值對永遠消失了。
『肆』 python中兩個字典間根據相同的鍵篩選其對應的值
Python Code:
d1={'k1':'v1','k2':'v2','k3':'v3'}
d2={'k1':'v1_1','k3':'v3_3','k4':'v4'}
print(list(map(lambdak:(d1[k],d2[k]),{*d1}&{*d2})))
輸出:
[('v3','v3_3'),('v1','v1_1')]
上述演示代碼中 d1 和 d2 這兩個字典的相同鍵都是:k1 和 k3,
其對應值為:v1, v1_1 和 v3, v3_3,輸出時列表內部以元組的形式返回了這兩個相同建的值。
『伍』 Python 中有沒有辦法快速檢索dict中的values
使用dict的values方法
dicts={'1':'2','2':'4'}
print(dict.values())
『陸』 python中如何匹配存在目標鍵值的dict
解決方法如下:
dic1={"little":"111"}
dic2={"little":"abcd"}
dic3={"little":"abc"}
arr=[dic1,dic2,dic3]
fordiccinarr:
ifdicc.has_key("little"):
value=dicc["little"]
ifvalue=="abc":
printdicc
建議把數據放到list裡面,list是最靈活的一種數據結構;
首先創建list將數據載入進來;
然後依次遍歷dict,查看是否存在鍵值;
如果存在,取出值進行比較;
如果是「abc」,列印輸出,或者做其他操作。
『柒』 python 爬蟲怎麼過濾正文以外的
利用bs4查找所有的div,用正則篩選出每個div裡面的中文,找到中文字數最多的div就是屬於正文的div了。定義一個抓取的頭部抓取網頁內容:
importrequests
headers={
'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/47.0.2526.106Safari/537.36',
'Host':'blog.csdn.net'}
session=requests.session()
defgetHtmlByRequests(url):
headers.update(
dict(Referer=url,Accept="*/*",Connection="keep-alive"))
htmlContent=session.get(url=url,headers=headers).content
returnhtmlContent.decode("utf-8","ignore")
統計文字的正則:
importre
#統計中文字數
defcountContent(string):
pattern=re.compile(u'[u1100-uFFFD]+?')
content=pattern.findall(string)
returncontent
查找每一個div,統計每一個div的文字,只保留文字最多的那個div:
#分析頁面信息
defanalyzeHtml(html):
#初始化網頁
soup=BeautifulSoup(html,"html.parser")
part=soup.select('div')
match=""
forparagraphinpart:
content=countContent(str(paragraph))
iflen(content)>len(match):
match=str(paragraph)
returnmatch
最後的調用幾個函數即可:
defmain():
url="http://blog.csdn.net/"
html=getHtmlByRequests(url)
mainContent=analyzeHtml(html)
soup=BeautifulSoup(mainContent,"html.parser")
print(soup.select('div')[0].text)
『捌』 python如何防止dict中元素的位置不會變化
解包裹可以實現這一功能。解包裹在傳遞字典dict時,讓字典的每個鍵值對作為一個關鍵字傳遞給func。為了提醒Python,參數dict是包裹關鍵字傳遞所用的字典,在dict前加**。
def func(a,b,c):
print a,b,c
dict = {'a':1,'b':2,'c':3}
func(**dict)
與字典解包裹類似,元組也可以解包裹。就是在傳遞tuple時,讓tuple的每一個元素對應一個位置參數。在調用func時使用*,是為了提醒Python:我想要把args拆成分散的三個元素,分別傳遞給a,b,c。
args = (1,3,4)
func(*args)
『玖』 python 如何在一個字典中截取其中的一段
# 文字版:
# -*- coding: utf-8 -*-
# 輔助函數:把月和日轉化成小數格式,方便比較。比如六月三日就轉化成6.3
def md2f(m,d):
return (m) + (d)*0.1
# 這個函數用來截取需要的時間段
def getDateRange(dates,startMonth,startDate,endMonth,endDate):
rangedDates = {} #先定義一個空字典,過會把符合要求的值都添進去
for k in dates.keys(): #用一個loop,把原本字典里所有的內容都檢查一遍
y = int(k.split("/")[0]) #從「年/月/日「的格式裡面提取出y=年、m=月、d=日
m = int(k.split("/")[1])
d = int(k.split("/")[2])
# 進行比較,如果月、日符合所給定的時間段,那就把這一項添到新字典里去
if md2f(startMonth,startDate) < md2f(m,d) < md2f(endMonth,endDate):
rangedDates[k] = dates[k]
return rangedDates # 返回新字典,這裡面就是所有符合時間段的日期了。
sampleDates = {"1984/2/10":1,"1984/5/15":9,"1984/6/16":3,"1984/9/12":6,"1984/11/12":8,"1985/8/1":7}
print getDateRange(sampleDates,6,1,10,1) #調用函數,找到六月一號到十月一號之間的日期
『拾』 python中用dict取值的時候有什麼注意的
字典中取值大家很容易想到用dict[key],這個有什麼難的,確實一般取值是這樣的,但是你有沒有想過若你取的值不存在,就會發生異常,風險很大.(良好的代碼,一定是要考慮健壯性,切記)
建議:盡量用dict.get()來代替dict[key]!