Python入门实践12 ——字典(Dictionary)
一、目标
          1、掌握字典的特征,key唯一,不可变。
          
           2、掌握字典的常用操作。
        
二、要点
1、字典
字典是另一种可变容器模型,是一个无序、以键值对存储的数据类型,数据关联性强、唯一一个映射数据类型。
键:必须是可哈希(不可变的数据类型:字符串、数字、元组、bool)值,并且是唯一的。
2、定义
字典的每个键值(key=>value)对用冒号( : )分割,每个对之间用逗号( , )分割,整个字典包括在花括号( {}) 中。
格式如下:
d = {key1 : value1, key2 : value2 }
- 
            键必须是唯一的。不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。 
- 
            键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行, 
- 
            值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。 
          1)、{}直接创建字典
          
           scores = {'语文': 89, '数学': 92, '英语': 93};
          
           2)、使用关键字参数来创建字典
          
           dict6 = dict(spinach = 1.39, cabbage = 2.59)
          
           print(dict6);
        
3、字典里的值
把相应的键放入到方括号中。
如d[“key1”]
          dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
          
           print "dict['Name']: ", dict['Name'];
          
           print "dict['Age']: ", dict['Age'];
          
          
            4、字典的操作
          
          
           1)、增加
          
           (1)dict[key] = value;
          
           添加 key-value 对,如果该键已存在,则会覆盖之前的值 ,不存在的 key ,添加到字典序列后。
        
          (2) setdefault(key,value)
          
           字典调用该函数,参数“key”为必填,“value”如果不填写默认为None,这个函数的作用可以避免覆盖已存在的键。
          
           如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。
        
          print(scores.setdefault("化学",100));
          
           (3)、dict.update(dict2)
          
           dict2 -- 添加到指定字典dict里的字典。
          
           2)、删除
          
           (1)、del dict[key] 删除键对应的条目
        
          del dict['Name'] # 删除键是'Name'的条目
          
           del dict # 删除字典
        
          (2)、dict.clear() 清空字典所有条目
          
           dict.clear() # 清空字典所有条目
          
           (3)、dict.pop("key")
          
           (4)、dict.popitem()随机删除
        
          3)、修改
          
           dict[key] = value;
        
          4)、查找
          
           (1)、get(key)
          
           返回对应key的值
          
           (2)、dic[key]
          
           对应key的值
          
           (3)、in
          
           判断字典里面存不存在这个key。
          
           print('key' in dic ) # 有的话返回TRUE
        
          (4)、dic.values()
          
           查询所有的values。
          
           print(dic.values)
        
          (5)、dic.keys()
          
           查询所有的key。
          
           print(idic.keys())
        
5、内置函数
| 序号 | 函数 | 描述 | 
|---|---|---|
| 1 | cmp(dict1, dict2) | 比较两个字典元素。 | 
| 2 | len(dict) | 计算字典元素个数,即键的总数。 | 
| 3 | str(dict) | 输出字典可打印的字符串表示。 | 
| 4 | type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型。 | 
6、内置方法
| 序号 | 函数 | 描述 | 
|---|---|---|
| 1 | dict.clear() | 删除字典内所有元素 | 
| 2 | dict.copy() | 返回一个字典的浅复制 | 
| 3 | dict.fromkeys(seq[, val]) | 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值 | 
| 4 | dict.get(key, default=None) | 返回指定键的值,如果值不在字典中返回default值 | 
| 5 | dict.has_key(key) | 如果键在字典dict里返回true,否则返回false | 
| 6 | dict.items() | 以列表返回可遍历的(键, 值) 元组数组 | 
| 7 | dict.keys() | 以列表返回一个字典所有的键 | 
| 8 | dict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default | 
| 9 | dict.update(dict2) | 把字典dict2的键/值对更新到dict里 | 
| 10 | dict.values() | 以列表返回字典中的所有值 | 
| 11 | pop(key[,default]) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 | 
| 12 | popitem() | 随机返回并删除字典中的一对键和值。 | 
三、步骤
          1、新建新建ex12.py文件。
          
           2、录入实例中代码。
          
           3、运行。
        
四、实例(Python 3.0+)
          
            #!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'jungle'
__mtime__ = '2019-08-28'
"""
scores = {'语文': 89, '数学': 92, '英语': 93};
print(scores);# 空的花括号代表空的dict
empty_dict = {};
print(empty_dict);
# 使用元组作为dict的key
dict2 = {(20,30):'good', 30:'bad'};
print(dict2,dict2[20,30]);
# 使用关键字参数来创建字典
dict6 = dict(spinach = 1.39, cabbage = 2.59)
print(dict6) # {'spinach': 1.39, 'cabbage': 2.59}
#调用字典的值
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print( "dict['Name']: ", dict['Name']);
print( "dict['Age']: ", dict['Age']);
# 对不存在的key赋值,就是增加key-value对
scores['物理'] = 99;
print(scores.setdefault("化学",100));
print(scores) ;
# update把另一字典添加到一个字典
dict = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female' }
dict.update(dict2)
print("Value : %s" %  dict);
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print(dict);
# 删除键是'Name'的条目
del dict['Name']
print(dict);
dict.clear()  # 清空字典所有条目
del dict  # 删除字典
####字典的定义 key: value
info ={
    'stu1001':"TengLan Wu",
    'Stu1002':"Longze Loula",
    'stu1103':"XiaoZe Maliya",
}
#####查询 字典的数据###############
#####查询所有,但是字典是无序的
print(info);
#如果查询一个只需要查询对方的key
print(info["stu1001"]);
#不报错方式查询(安全点)
print(info.get("stu1001"));
#判断字典里面存不存在这个key
print('stu1005' in info ); # 有的话返回TRUE
#查询所有的values
print(info.values());
#查询所有的key
print(info.keys());
print(dir(dict));
          
        
        五、运行输出:
          
            {'语文': 89, '数学': 92, '英语': 93}
{}
{(20, 30): 'good', 30: 'bad'} good
{'spinach': 1.39, 'cabbage': 2.59}
dict['Name']:  Zara
dict['Age']:  7
100
{'语文': 89, '数学': 92, '英语': 93, '物理': 99, '化学': 100}
Value : {'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
{'Name': 'Zara', 'Age': 7, 'Class': 'First'}
{'Age': 7, 'Class': 'First'}
{'stu1001': 'TengLan Wu', 'Stu1002': 'Longze Loula', 'stu1103': 'XiaoZe Maliya'}
TengLan Wu
TengLan Wu
False
dict_values(['TengLan Wu', 'Longze Loula', 'XiaoZe Maliya'])
dict_keys(['stu1001', 'Stu1002', 'stu1103'])
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
          
        
        注:
1、撰写内容来源于个人收集的文献,属学术探究范畴。
2、版权属于时进军个人,转载需注明。


 
               
               
               
					 
					