Python初学(十九)

Python037

Python初学(十九),第1张

键值对”是组织数据的一种重要方式,广泛应用在Web系统中。键值对的基本思想是将“值”信息关联一个“键”信息,进而通过键信息查找对应值信息,这个过程叫映射。Python语言中通过字典类型实现映射。

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了.

-----

希望可以帮到题主, 欢迎追问.