Ⅰ python 字典的问题
题主你好,
写在前面: 我先给题主举个例子, 我先定义一个字典:
dict03 = {1:3, 5:7}
可以看出上面这个字典有两个元素, 此时我们使用dict03.values()得到的结果为:
dict_values([3,7])
从上面这个结果可以看出, 字典的values方法,会将字典中的所有键值对的值生成一个列表, 作为dict_values()参数,并返回.
-----
上面没有讲到重点,只是作了一个引, 下面看到底问题出在哪了.
题主定义的dict03={0:[1,3,5,7]}, 这个字典, 其实只有一个键值对, 键是整数0,值是列表[1,3,5,7], 所以此时dict03.value()返回的值为 dict_values([[1,3,5,7]]), 重点就在这里, 注意,返回的是:
dict_values( [[ 1,3,5,7 ]] )
而不是
dict_values( [ 1,3,5,7 ] )
抛开前面这个dict_values, 也就是返回的是:
[[1,3,5,7]] 而不是 [1,3,5,7]
前者是含有一个元素的列表, 只不过这个元素本身也是一个列表;
后者是含有4个元素的列表, 每个元素都是整型数字;
而 x in y 这种形式中, 是看x是否存在于y中,
拿题主的代码来说, 其实 i in dict03.values() 翻译过来是:
5 in [[1,3,5,7]], 因为[[1,3,5,7]]这个列表就一个元素,为[1,3,5,7],所以5并不在[[1,3,5,7]]中,
如果翻译过来是:
5 in [1,3,5,7],那么我们得到的结果肯定是True, 因为[1,3,5,7]中有4个元素,而5恰在其中.
所以解决方法也就有了, 想办法去掉[[1,3,5,7]]最外层的[].
代码及测试截图如下:
上图中, 第一个红框是将dict_values([[1,3,5,7]])转换成 [[1,3,5,7]];
第二个红框是将[[1,3,5,7]]转换成[1,3,5,7];
此时最后一句print(5 in [1,3,5,7]) 也就得到了我们想要的结果True了.
-----
希望可以帮到题主, 欢迎追问.
Ⅱ python里面的字典有什么用
字典是另一种可变容器模型,可存储任意类型对象。
字典的每个键值 key-value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键一般是唯一的,必须是不可变的,如字符串,数字或元组。值不需要唯一,可以取任何数据类型。
在需要使用hash时,就需要用到字典。
比如在统计字符个数时,可以使用字典。
d = {}
for char in strs:
d[char] = d.get(char, 0) + 1
Ⅲ Python中字典与列表的区别
字典:你知道一个key可以找到一个对应的value,通常你知道key是什么,像查字典一样,方向明确
列表:包含各种value,具体有些什么值不知道,通常需要遍历来取值。
Ⅳ Python 字典解析 代码问题
return [k for k,v in d.items() if v == value]的意思等同于:
k_list=[]
fork,vind.items():
ifv==value:
k_list.push(k)
returnk_list
只不过k_list采用的匿名声明
Ⅳ python字典的特点和用处
字典的特点:
字典的每个健值的展现方式是:key:value用冒号分割;键值之间为逗号分割;整个字典用大括号{}将键值括起来;
键值可以是任意类型的对象;
键必须是唯一的;
键是不可变的;
字典的作用:
字典(日常生活中的字典和Python字典)旨在让你能够轻松地找到特定的单词(键),以获悉其定义(值)。
在很多情况下,使用字典都比使用列表更合适。下面是Python字典的一些用途:
表示棋盘的状态,其中每个键都是由坐标组成的元组;
存储文件修改时间,其中的键为文件名;
数字电话/地址簿。
Ⅵ python中字典的使用方法怎么样的
字典理解如下
另一个非常有用的 Python 内建数据类型是 字典 (参见 Mapping Types — dict )。字典在某些语言中可能称为 联合内存 ( associative memories )或 联合数组 ( associative arrays )。序列是以连续的整数为索引,与此不同的是,字典以 关键字 为索引,关键字可以是任意不可变类型,通常用字符串或数值。如果元组中只包含字符串和数字,它可以作为关键字,如果它直接或间接的包含了可变对象,就不能当作关键字。不能用列表做关键字,因为列表可以用索引、切割或者 append() 和 extend() 等方法改变。
理解字典的最佳方式是把它看作无序的键: 值对 (key:value 对)集合,键必须是互不相同的(在同一个字典之内)。一对大括号创建一个空的字典: {} 。初始化列表时,在大括号内放置一组逗号分隔的键:值对,这也是字典输出的方式。
字典的主要操作是依据键来存储和析取值。也可以用 del 来删除键:值对(key:value)。如果你用一个已经存在的关键字存储值,以前为该关键字分配的值就会被遗忘。试图从一个不存在的键中取值会导致错误。
对一个字典执行 list(d.keys()) 将返回一个字典中所有关键字组成的无序列表(如果你想要排序,只需使用 sorted(d.keys()) )。[2] 使用 in 关键字(指Python语法)可以检查字典中是否存在某个关键字(指字典)。
Ⅶ 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层
'''
Ⅷ 关于python中字典
extension[ext]+=1 等同于extension[ext] = extension[ext]+1
a=a+1 ; ++a ; a++ ; a+=1; 这四个语句通常是可以通用的,a=a+1简写为a+=1;也是经常遇到的
Ⅸ python中字典常用的方法有哪些,分别有什么作用
写法:字典序列[key] = 值 ***字典为可变类型
常用方法:
1、# 新增字典中的数据
dict1 = {'name':'huu','age':20,'gender':'男'}
dict1['id'] = 133
print(dict1)
2、# 修改字典中的数据
dict1['name'] = 'xiauaiguai'
print(dict1)
3、删除字典或删除字典中指定键值对
del()/del:
dict1 = {'name':'huanghu','age':30,'gender':'男'}
# del(dict1) 直接将字典删除了,运行报错
del dict1['name']
print(dict1)
# del dict1[names] 删除不存在的key,运行报错
4、清空字典
clear():
dict1.clear() # 清空字典
print(dict1)
5、查找
key值查找
如果当前查找的key存在则返回对应的值,否则则报错
函数查找
get():如果当前查找的key不存在则返回第二个参数值(默认值),
如果省略第二个参数则返回 None
key()
dict1 = {'name':'huhu','age':20,'gender':'男'}
print(dict1['name']) # huhu
print(dict1['id']) # 报错
# 1, get()查找
print(dict1.get('name')) # huanghu
print(dict1.get('id',133)) # 133--如果当前查找的key不存在则返回第二个参数值(默认值)
print(dict1.get('id')) # None--如果省略第二个参数则返回 None
# 2, keys() 查找字典中所有的key,返回可迭代对象
print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])
# 3,values() 查找字典中所有的values,
print(dict1.values()) # dict_values(['huanghu', 30, '男'])
# 4, items() 查找字典中所有的键值对,返回可迭代对象,里面的数据是元组,
元组数据1是字典中的key,元组数据2是字典key对应的值
print(dict1.items()) # dict_items([('name', 'huahu'), ('age', 20), ('gender', '男')])
Ⅹ python为什么使用字典解析会出现值一样的结果
这是一个嵌套循环,由于dict不允许重复,最终每个key对应的value的值都是内层循环oldlist最后一项的值即3。要实现key和value一一对应的关系最好的方法是使用zip()函数:
i = dict(zip(thelist,oldlist))