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)