My_Project

资料整理


Python序列应用-字典

<p>1、字典定义</p> <pre><code>1.1、定义 1.字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分割,以大括号包围的序列。 2.字典是python基础数据类型当中唯一一个映射关系的数据类型。 3.由于字典无序,所以我们定义字典和字典生成之后的元素的顺序是不同的。 1.2、案例 dict1 = {'name':'jason','pwd':123456} dict2 = { 'id1':{'name':'jason','password':123456}, 'id2':{'name':'张三','password':123456} } dict3 = { 'id1':['jason',123456] 'id2':['张三',123456] }</code></pre> <p>2、字典特点</p> <pre><code>(1)字典是无序的,字典没有索引值. (2)字典以键取值,(字典的键相当于列表的索引)。 (3)字典的键唯一且不可修改;列表和字典不可以给字典做键。 (4)字典是任意对象的无序集合。 (5)字典是可变的,可以任意嵌套。</code></pre> <p>3、创建字典</p> <pre><code>3.1、直接创建 方法 dict={"key1":"val1","key2":"val2"..."keyn":"valn"} 参数说明: dict:字典名称 key:元素的键,必须是唯一不可变的,可以是元组、字符串、数字。 val:元素的值,可以是任意数据类型。 案例 dict={"name":"keru","sal":"20k","age":"18"} print(dict) 输出: {'name': 'keru', 'sal': '20k', 'age': '18'} 3.2、创建空字典 (1)直接创建 方法 dict={}或dict=dict() 案例 dict={} print(dict) print(type(dict)) 输出: {} &lt;class 'dict'&gt; AA=dict() print(AA) print(type(AA)) 输出: {} &lt;class 'dict'&gt; (2)通过dict对象的fromkeys()方法创建 方法 d=dict.fromkeys(list) 参数说明: d:字典名称。 list:字典键的列表。 案例 list=["老大","老二","老三","老四"] d=dict.fromkeys(list) print(d) 输出:{'老大': None, '老二': None, '老三': None, '老四': None} (3)通过已经存在的元组和列表创建 方法 d={tuple:list} 3.3、通过映射函数创建字典 方法 d=dict(zip(list1,list2)) 参数说明: d:字典名称 zip():用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。 如果想得到元组,可以将zip对象使用tuple()函数转化为元组。 如果想得到列表,可以将zip对象使用list()函数转化为列表。 list1:1个列表,用于指定要生成字典的键。 list2:1个列表,用于指定要生成字典的值;如果list1和list2的长度不同,则与最短的列表长度一致。 注意:在python2.x中,zip()函数返回的内容为包含元组的列表。 案例 name=["老大","老二","老三","老四"] sign=["水瓶","双鱼","射手","双子","狮子"] d=dict(zip(name,sign)) print(d) 输出: {'老大': '水瓶', '老二': '双鱼', '老三': '射手', '老四': '双子'}</code></pre> <p>3.4、通过给定的&quot;键值对&quot;创建字典 方法 d=dict(key1=val1...keyn=valn)</p> <pre><code>案例 d=dict(老大="水瓶",老二="双鱼",老三="射手",老四="双子") print(d) 输出: {'老大': '水瓶', '老二': '双鱼', '老三': '射手', '老四': '双子'} 案例 tuple=("老大","老二","老三","老四") list=["水瓶","双鱼","射手","双子"] d={tuple:list} print(d) 输出:{('老大', '老二', '老三', '老四'): ['水瓶', '双鱼', '射手', '双子']}</code></pre> <p>4、删除字典</p> <pre><code>4.1、删除整个字典 方法 del dict dict = dict(zip("12345","abcde")) del dict print(dict) 输出: &lt;class 'dict'&gt; 4.2、删除指定键对应的值 方法 del dict["key"] dict = dict(zip("12345","abcde")) del dict["2"] print(dict) 输出: {'1': 'a', '3': 'c', '4': 'd', '5': 'e'} 4.3、删除字典所有元素,成为空字典 方法 dict.clear() dict = dict(zip("12345","abcde")) print(dict.clear()) print(dict) print(dict.items()) 输出: None {} dict_items([]) 4.4、弹出,返回并删除指定"键"对应的值 方法 dict.pop("key") dict = dict(zip("12345","abcde")) print(dict.pop("1")) print(dict) print(dict.items()) 输出: a {'3': 'c', '4': 'd', '5': 'e', '2': 'b'} dict_items([('3', 'c'), ('4', 'd'), ('5', 'e'), ('2', 'b')]) 4.5、随机删除并返回字典中的一个键值元组,这里随机的原因是因为字典无序 方法 dict.popitem() dict = dict(zip("12345","abcde")) print(dict.popitem()) print(dict) print(dict.items()) 输出: ('2', 'b') {'3': 'c', '1': 'a', '5': 'e', '4': 'd'} dict_items([('3', 'c'), ('1', 'a'), ('5', 'e'), ('4', 'd')])</code></pre> <p>5、访问字典</p> <pre><code>print(dict) print(dict[key]) print("key的星座是:",dict["key"] if "" in dict else "字典里无此人") print("key的星座是:",dict.get("key","字典里无此人"))</code></pre> <p>6、遍历字典</p> <pre><code>方法 dict.items() 案例 dict={"AA":"111","BB":"222","CC":"333"} for i in dict.items(): print(i) 输出: ('AA', '111') ('BB', '222') ('CC', '333') 案例 dict={"AA":"111","BB":"222","CC":"333"} for key,value in dict.items(): print(key,value) 输出: AA 111 BB 222 CC 333</code></pre> <p>7、字典推导式</p> <pre><code>使用字典推导式可以快速生成1个字典。 案例 import random randomdict = {i:random.randint(10,100) for i in range(1,5)} print("生成的字典为:",randomdict) 输出: 生成的字典为: {1: 12, 2: 91, 3: 10, 4: 79}</code></pre> <p>8、添加字典元素</p> <pre><code>方法 dict[key]=value 说明 如果key不存在,就会向字典里添加1个元素。 如果key已存在,则会直接修改key对应的值。</code></pre> <p>9、修改字典元素</p> <pre><code>方法 dict[key]=value 说明 如果key不存在,就会向字典里添加1个元素。 如果key已存在,则会直接修改key对应的值。</code></pre> <p>10、删除字典元素</p> <pre><code>方法 del dict["key"] 案例 dict = dict(zip("12345","abcde")) if "2" in dict: /这里加1个判断的作用是为了防止假如"2"不存在抛出的异常。 del dict["2"] print(dict) 输出: {'1': 'a', '3': 'c', '4': 'd', '5': 'e'}</code></pre> <p>11、字典的判断</p> <pre><code>方法 in 案例 判断指定的键是否在字典当中。 dict = dict(zip("12345","abcde")) print("1" in dict) print("6" in dict) 输出: True False</code></pre> <p>12、字典的取值</p> <pre><code>12.1、keys 获取字典所有的键 dict = dict(zip("12345","abcde")) print(dict) 输出: {'1': 'a', '5': 'e', '3': 'c', '2': 'b', '4': 'd'} print(dict.keys()) 输出: dict_keys(['3', '2', '4', '5', '1']) for keys in dict.keys(): print(keys,end="") 输出: 12354 12.2、values 获取字典所有的值 dict = dict(zip("12345","abcde")) print(dict.values()) 输出: dict_values(['a', 'c', 'd', 'e', 'b']) for values in dict.values(): print(values,end="") 输出: acdeb 12.3、items 返回字典键值呈元组形式的格式,键和值 dict = dict(zip("12345","abcde")) print(dict.items()) 输出: dict_items([('4', 'd'), ('1', 'a'), ('5', 'e'), ('3', 'c'), ('2', 'b')]) for items in dict.items(): print(items,end="") 输出: ('4', 'd')('1', 'a')('5', 'e')('3', 'c')('2', 'b') 12.4、get 以键取值,如果指定键不存在,默认返回None,可以指定返回内容 dict = dict(zip("12345","abcde")) print(dict.get("1")) print(dict["1"]) print(dict.get("6")) print(dict["6"]) 输出: a a None KeyError: '6' 12.5、update 更新指定键的内容,如果键不存在,创建 12.6、setdefault 设置默认,如果键存在,返回值,如果键不存在,创造键,值默认为 None,值也可以自定义 dict = dict(zip("12345","abcde")) print(dict.setdefault("1")) print(dict.setdefault("6")) print(dict.setdefault("5","w")) print(dict.setdefault("6","w")) 输出: a None e None</code></pre> <p>13、zip函数的用法</p> <pre><code>zip 将序列对应索引位上的元素集合到一个元组当中。 dict(zip(“abc”,range(3))) fromkeys print(zip((1,2,3),["a","b","c"],"efg")) 输出: &lt;zip object at 0x000002947B8B8048&gt; [(1,"a","e"),(2,"b","f"),(3,"c","g")] print(dict([(1,"a"),(2,"b"),(3,"c")])) print(dict(zip(range(1,4),"abc"))) 输出: {1: 'a', 2: 'b', 3: 'c'} {1: 'a', 2: 'b', 3: 'c'}</code></pre> <p>14、fromkeys的用法</p> <pre><code>以后面序号的元素为键,None为值的字典。 print({}.fromkeys("abc")) print({}.fromkeys("123")) 输出: {'b': None, 'c': None, 'a': None} {'1': None, '2': None, '3': None}</code></pre> <p>15、视图模式</p> <pre><code>viewitems viewkeys viewvalues 视图模式的主要特征是与字典保持同步,在我们 python 基础部分不做深入研究。 dict = dict(zip("12345","abcde")) print(dict.viewitems()) print(dict.viewkeys()) print(dict.iviewvalues()) 输出: AttributeError: 'dict' object has no attribute 'viewitems' AttributeError: 'dict' object has no attribute 'viewkeys' AttributeError: 'dict' object has no attribute 'iviewvalues'</code></pre> <p>16、迭代模式</p> <pre><code>Iteritems iterkeys itervalues 在python2.4版本之后,为了提高python运行效率python提出了迭代器、生成器、装饰器的定义,而字典的迭代模式正式去用了迭代器原理, 当我们直接调用的时候,我们只能得到一个内存地址,但我们具体想要取值的时候,需要借助next方法。 dict = dict(zip("12345","abcde")) print(dict.iteritems()) print(dict.iterkeys()) print(dict.itervalues()) 输出: AttributeError: 'dict' object has no attribute 'iteritems' AttributeError: 'dict' object has no attribute 'iterkeys' AttributeError: 'dict' object has no attribute 'itervalues'</code></pre>

页面列表

ITEM_HTML