Python字典

python字典

1.1 字典的定义

  • dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型
  • 字典同样可以用来 存储多个数据
    • 通常用于存储 描述一个 物体 的相关信息
  • 和列表的区别
    • 列表有序 的对象集合
    • 字典无序 的对象集合
  • 字典用 {} 定义
  • 字典使用 键值对 存储数据,键值对之间使用 , 分隔
    • key 是索引
    • value 是数据
    • 之间使用 : 分隔
    • 键必须是唯一的
    • 可以取任何数据类型,但 只能使用 字符串数字元组
xiaoming = {"name": "小明",
            "age": 18,
            "gender": True,
            "height": 1.75}

1.2 字典常用操作

  • ipython3 中定义一个 字典,例如:xiaoming = {}
  • 输入 xiaoming. 按下 TAB 键,ipython 会提示 字典 能够使用的函数如下:
In [1]: xiaoming.
xiaoming.clear       xiaoming.items       xiaoming.setdefault
xiaoming.copy        xiaoming.keys        xiaoming.update
xiaoming.fromkeys    xiaoming.pop         xiaoming.values
xiaoming.get         xiaoming.popitem    

有关 字典常用操作 可以参照上图练习

#先定义字典
dict1 = {"math": "Kevin", "logic": "Emily"}

#返回指定键的值,如果字典里没这个可以则返回default的值
#获取math的值
dict1.get("math")

#获取不存在的值English, 则返回Ray
my_dict.get("English", "Ray")

#获取字典里的所有key
dict1.keys()

#获取字典所有的values
dict1.values()

#获取字典的key和value
for k, v in dict1.items():
    print('{key} -- {value}'.format(key=k, value=v))

#改变字典的值
dict1["math"] = "Ray" # 执行后,字典变成{"math": "Ray", "logic": "Emily"}

#删除字典的某个值
del dict1["math"] #执行后,字典变成{"logic": "Emily"}

#删除字典
del dict1

# pop(key[,default])
#删除字典给定键 key 所对应的值,返回值为被删除的值,key值必须给出。否则,返回default值。
pop_obj = dict1.pop('math')  #Kevin
pop_obj = dict1.pop('English','NoKey')  #NoKey (没有 key,返回 default 值)

#popitem()
#随机返回并删除字典中的最后一对键和值。
#返回一个键值对(key,value)形式,按照LIFO(Last In First Out 后进先出法)顺序规则,即最末尾的键值对
pop_obj = dict1.popitem()  #("logic", "Emily")

1.3 循环遍历

  • 遍历 就是 依次字典 中获取所有键值对
# for 循环内部使用的 `key 的变量` in 字典
for k in xiaoming:

    print("%s: %s" % (k, xiaoming[k]))

提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多

1.4 应用场景

  • 尽管可以使用 for in 遍历 字典
  • 但是在开发中,更多的应用场景是:
    • 使用 多个键值对,存储 描述一个 物体 的相关信息 —— 描述更复杂的数据信息
    • 多个字典 放在 一个列表 中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理
card_list = [{"name": "张三",
              "qq": "12345",
              "phone": "110"},
             {"name": "李四",
              "qq": "54321",
              "phone": "10086"}
             ]

posted @ 2021-02-22 17:42  ToMonster  阅读(52)  评论(0)    收藏  举报