最新消息:

教学案例:字典使用小结

Python 少儿编程 1721浏览 0评论

字典使用小结

字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。字典的每个键值(key=>value)对用冒号(:)分割,每个键值对之间用逗号(,)分割,整个字典包括在花括号({ })中。

1.创建字典对象

① 直接定义字典对象 dict_a={}或dict1={1:’a’,2:’b’,3:’c’,4:’d’} Dict_b={1:’a’,2:’b’,3:’c’,4:’d’} ② dict方法创建字典 dict_a=dict(name=’fff’,age=40) (使用关键字参数) ③ zip方法将列表转换为字典对象 lst=['a','b','c','d'] lst1=[1,2,3,4] d=dict(zip(lst1,lst)) ④ fromkeys()方法创建字典对象,字典的value若不给定默认为None dict_a={}.fromkeys((‘x’,’y’),1) dict_b={}.fromkeys((‘a’,’b’)) 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例: >>>dict1={[1]:’a’,2,’c’} ‘键,不能为列表等不可变对象 File “<stdin>”, line 1  

    dict1={[1]:’a’,2,’c’}  

        ^ SyntaxError: invalid syntax 字典对象的值可以是可变对象,如下例 dict_a={‘a’:[1,2,3]} #字典值为列表 dict_b={‘a’:{‘A’:’B’}} #字典值为字典 print(“dictakey a的值的第2个元素为{}”.format(dict_a['a'][1])) #第2个元素的值 print(“dictbkey a的值的第1个元素为{}”.format(dict_b['a']['A'])) #第1个元素的值

2.访问字典对象

dict[key] 形式返回键key对应的值value 遍历字典对象 for k,v in d.items(): #取键值对  

    print(k,v) for k in d.values(): #取values值  

    print(k) for item in d: #取key值  

    print (item) for item in d: #取values值  

    print(d[item]) 如果key不在字典中会引发一个KeyError,就会发生异常,风险很大.(良好的代码,一定是要考虑健壮性,切记) >>>d {‘a’: 55, ‘dd’: 4, ‘AA’: 32, ‘Ca’: 54, ‘we’: 90} >>>d['k'] Traceback (most recent call last): File “<stdin>”, line 1, in<module>

KeyError: ‘k’ 解决方法:get方法 >>> print(d.get(‘k’)) #键值不存在时返回None None >>> print(d.get(‘k’,None)) #键值不存在时指定返回None None 尽量用dict.get()来代替dict[key]

3.检查key是否在字典中

in 、not in 用于判断是否存在字典中 形如:key in dict 有–>True,无–>False if ‘a’ in dict5: print (True)

4. 更新字典

添加一个数据项(新元素)或键值对,dict[new_key] = value 形式添加一个项 更新一个数据项(元素)或键值对,dict[old_key] = new_value

5.删除一个数据项(元素)或键值对

del dict5[key] 删除键key的项 del dict5 删除整个字典 dict5.pop(key) 删除键key的项并返回key对应的 value值

6.字典排序

字典排序可以使用sorted()函数,其函数原型如下 sorted(iterable,key,reverse),iterable 可以是dict.items(),dict.keys()等,key是一个函数,用来选取参与比较的元素,reverse(reverse=True降序,默认升序)指定排序是倒序或顺序。 d={‘abc’:25,’abd’:12,’bc’:30,’a’:35} print(sorted(d)) #按键排序,输出键的排序后结果 print(sorted(d.keys())) #按键排序 print(sorted(d.items())) #输出排序后键值对 Print(sorted(d.items(),key=lambda x:x[1]) #表示按照values排序 d.items()实际上是将d转换为可迭代对象,迭代对象的元素为(‘abc’,25)、(‘abd’,12)、(‘bc’,30)、(‘a’,35),items()方法将字典的元素转化为了元组,而这里key参数对应的lambda表达式的意思则是选取元组中的第二个元素作为比较参数(如果写作key=lambda item:item[0]的话则是选取第一个元素作为比较对象,也就是key值作为比较对象。lambda x:y中x表示参数,y表示lambda函数的返回值),所以采用这种方法可以对字典的value进行排序。注意排序后的返回值是一个list,而原字典中的键值对被转换为了list中的元组。 上述代码结果: ['a', 'abc', 'abd', 'bc'] ['a', 'abc', 'abd', 'bc'] [('a', 35), ('abc', 25), ('abd', 12), ('bc', 30)] [('abd', 12), ('abc', 25), ('bc', 30), ('a', 35)] 以下表达式是对字典d排序,排序的规则是传入参数x,依据字典d[x]值,即字典值升序。 for w in sorted(d,key=lambda x:d[x]): #取得字典key的排序结果 print(‘{}–{}’.format(w,d[w]) sorted(d,key=lambda x:d[x]) 这里是对字典d的键排序结果,与d.items()不同。 如何实现字典先按键排序,相同的按key排序 从上述介绍可知d.items()实际上是将d转换为可迭代对象,其中d[0],d[1]分别表示字典中的键和值,因为可以先按d[1],d[0]排序,代码如下: dictdis=sorted(dictsour.items(),key=lambda f:(f[1] ,f[0]),reverse=True)

教学案例:字典使用小结

您必须 登录 才能发表评论!