python数据类型(字典dictionary1)

字典(dictionary)

       字典的含义和表示都与其语义相似,就像我们小时候查找汉字,可以通过拼音字母(或笔画)进行检索。我们可以自己定义Python中的字典名字,然后通过这个名字查找到对应的数值。其中的名字叫作“键(key)”,对应的数值简称“值(value)”,所以字典也称“键值对”。需要注意的是,字典没有顺序一说,所有的值仅能用键获取。
 
       简而言之,字典被看作无序的键值对或有名字的元素列表。
 
一、字典的创建与使用
       字典的内容放在花括号内,键值对以英文冒号连接,不同的键值对以英文逗号隔开。
d=dict()    #创建一个空字典
d2={}       #创建一个空字典
d3={'name':'Jack','age':18}
print(d3['name'])   #'Jack'  获取键的值

  

注意:1、每次输出字典中键值对的顺序可能是不同的。
           2、字典里的key不允许重复,如果key重复了,后一个key对应的值会覆盖前一个值。
           3、字典里的key只能是不可变数据类型(可哈希),一般使用字符串,value可以是任意数据类型。
 
        字典有键与值的区分,那么该如何获取键与值的内容呢?为此Python提供了三个方法,分别是keys()、values()和items()。
info={'name':'jack',
      'age':18,
      'gender':'male'
      }

print(info.keys())     # 取键
# dict_keys(['name', 'age', 'gender'])

print(info.values())   # 取值
# dict_values(['jack', 18, 'male'])

print(info.items)    # 取键值对
# dict_items([('name', 'jack'), ('age', 18), ('gender', 'male')])

for k,v in info.items():   # 遍历键值对
    print(k, v)
# name jack
# age 18
# gender male

  

 二、字典的增删改查
 
       1.增加
          如果在使用 字典名['键']=数据 时,“键”在字典中不存在,那么就会新增这个元素。
student={"name":"Jack"}
student['age']=20   #为不存在的键赋值就是添加元素
print(student)   #{"name":"Jack","age":20}

  

       2.删除
          对字典进行删除操作,有以下几种:
  • pop(键) : 删除字典里指定的键值对,返回对应的值。如键不存在,报错。
  • popitem():删除字典里随机一组键值对,返回是被删除元素的键值对(元组)
  • del 字典名[键]:删除指定的键值对,如键不存在,报错。
  • clear():清空字典
student={'name':'Jack','age':20,'gender':'female'}
s=student.pop('age')
print(s)    #  20
s1=student.popitem()   #随机删除一组键值对
print(s1)   #  ('gender', 'female')
del student['name']   #删除指定的键值对

  

       3.修改

          字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改。

student={'name':'Jack':'age':18}
print('修改之前的字典是%s:'%student)
student['age']=20   #为已存在的key赋值就是修改
print('修改之后的字典是%s:'%student)

     运行结果:

修改之前的字典为{'name':'Jack','age':18}
修改之后的字典为{'name':'Jack,'age':20}

 

       4.查询
student={'name':'Jack':'age':18}
print(student['name'])   #'Jack'
print(student['sex'])   #获取不存在的key,会报错

print(student.get('age'))  # 18
print(student.get('sex'))  #获取不存在的key,获取到空的内容,不报错
print(student.get('sex','男'))  #获取不存在的key,可以提供一个默认值。

  注意:获取默认值不会修改字典内容。

       5.update方法的使用
 
          列表可以使用extend方法将两个列表合并成为一个列表。
          字典可以使用update方法将两个字典合并成为一个字典。
s1={'name':'Jack','age':20}
s2={'gender':'female'}
s1.update(s2)
print(s1)  #  {'name': 'Jack', 'age': 20, 'gender': 'female'}
print(s1+s2)  #报错,字典间不支持加法运算

  

 三、字典推导式
student = {'name': 'Jack', 'age': 18}
s = {v: k for k, v in student.items()}
print(s)  # {'Jack': 'name', 18: 'age'}