『壹』 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]!