Python语言中的字典使用大括号{}建立,每个元素是一个键值对,使用方式如下:
{<键1>:<值1>, <键2>:<值2>, ... , <键n>:<值n>}
其中,键和值通过冒号连接,不同键值对通过逗号隔开。字典类型也具有和集合类似的性质,即键值对之间没有顺序且不能重复。
列表类型采用元素顺序的位置进行索引。由于字典元素“键值对”中键是值的索引,因此,可以直接利用键值对关系索引元素。
字典中键值对的索引模式如下,采用中括号格式:
<值>= <字典变量>[<键>]
print(d[‘201801’])
输出的也就是: 小明
使用大括号可以创建字典。通过索引和赋值配合,可以向字典中增加元素。
字典是存储可变数量键值对的数据结构,键和值可以是任意数据类型,通过键索引值,并可以通过键修改值。
字典类型有一些通用的操作函数
dict()函数用于生成一个空字典,作用和{}一致
字典类型存在一些操作方法,使用语法形式是:
<字典变量>.<方法名称>(<方法参数>)
d.keys()返回字典中的所有键信息,返回结果是Python的一种内部数据类型dict_keys,专用于表示字典的键。如果希望更好的使用返回结果,可以将其转换为列表类型。
d.values()返回字典中的所有值信息,返回结果是Python的一种内部数据类型dict_values。如果希望更好的使用返回结果,也可以将其转换为列表类型。
d.items()返回字典中的所有键值对信息,返回结果是Python的一种内部数据类型dict_items。当然也可以转成列表类型 即: list(d.items())
d.get(key, default)根据键信息查找并返回值信息,如果key存在则返回相应值,否则返回默认值,第二个元素default可以省略,如果省略则默认值为空。 例如: 就拿上边的数组d 来说 d.get(‘201801’,“不存在”) 相当于一个if语句 如果key 201801 存在 就返回201801 values 不存在就返回 默认值 不存在
d.pop(key, default)根据键信息查找并取出值信息,如果key存在则返回相应值,否则返回默认值,第二个元素default可以省略,如果省略则默认值为空。相比d.get()方法,d.pop()在取出相应值后,将从字典中删除对应的键值对。 和d.get方法类似
d.popitem()随机从字典中取出一个键值对,以元组(key,value)形式返回。取出后从字典中删除这个键值对。
d.clear()删除字典中所有键值对。
此外,如果希望删除字典中某一个元素,可以使用Python保留字del。 即: del d[key]
字典类型也支持保留字in,用来判断一个键是否在字典中。如果在则返回True,否则返回False。
与其他组合类型一样,字典可以遍历循环对其元素进行遍历,基本语法结构如下:
for <变量名>in <字典名>
<语句块>
for循环返回的变量名是字典的索引值。如果需要获得键对应的值,可以在语句块中通过get()方法获得。
以上就是本章的所有内容,感谢大家.
Python 学习的基础(持续更新中......)
1、说明python中检测字典的键中是否含有某串字符,便利字典键值,再判断字符串是否在键值中即可。2、示例代码:# 定义一个字典dic = {'1984/1/2': 123, '1984/1/3': 0, '1985/1/1': 156}# 遍历字典键中是否包含1984for key in dic: if '1984' in key: print('键值中包含字符串"1984"') # 或者需要的其它操作 else: print('键值中不包含字符串"1984"')3、执行结果:键值中包含字符串"1984"键值中不包含字符串"1984"键值中包含字符串"1984"
4、其它说明:python使用for in直接操作字典就是遍历字典的键值,python使用in操作来判断字符串中是否包含子串最方便,要优于使用字符串的函数index或者find。
index函数在找不到子串时会报错,find函数会返回-1。
题主你好,
写在前面: 我先给题主举个例子, 我先定义一个字典:
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了.
-----
希望可以帮到题主, 欢迎追问.