Python 字典(Dictionary)
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
字典的定义
xiaoming_dict = {"name" : "小明",}
取值
print(xiaoming_dict["name"]) 在取值时,如果指定的key不存在 # KeyError: '123' print(xiaoming_dict["123"])
增加/修改
# 如果key不存在,则新增一个键值对 xiaoming_dict["age"] = 18 print(xiaoming_dict) # 如果key存在,则修改原有的一个键值对 xiaoming_dict["name"] = "小小明" print(xiaoming_dict)
删除
xiaoming_dict.pop("name") print(xiaoming_dict) # 如果删除指定键值对时,所指定的key不存在 # KeyError: '123' xiaoming_dict.pop("123")
统计键值对的数量
print(len(xiaoming_dict))
合并字典
type_dict = {"height" : 1.75,"age" : 22} # 如果合并的字典包括原有的存在的键值对,则会覆盖原有的键值对 xiaoming_dict.update(type_dict)
清空键值对
xiaoming_dict.clear()
循环遍历整个字典
# 变量k是每次循环中,获取到的键值对的key xiaoming_dict = {"name" : "小明", "QQ" : "123456", "phone" : "10086",} print(xiaoming_dict) for k in xiaoming_dict: print("%s - %s" % (k,xiaoming_dict[k])) # 使用 多个键值对,存储,描述一个物体的相关信息--描述更复杂的数据信息 # 将 多个字典放在一个列表中,在进行遍历 card_list = [ {"name" : "张山", "QQ号" : "123456", "手机号" : "10086"}, {"name" : "王五", "QQ号" : "234567", "手机号" : "10010"}, {"name" : "李四", "QQ号" : "345678", "手机号" : "10000"} ] for card_info in card_list: print(card_info) # 字典是一个无序的数据集合,使用print函数输出字典时, # 输出顺序和定义顺序是不一致的 # "key" : "value" # 以列表返回可遍历的(键, 值) 元组数组 # xiaoming_dict.items() #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default # xiaoming_dict.setdefault(key,default= None) # 返回一个字典的浅复制 # xiaoming_dict.copy() # xiaoming_dict.keys # xiaoming_dict.update(dict2) ! 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值 # xiaoming_dict.fromkeys(seq[,val]) # xiaoming_dict.pop() ! # 以列表返回字典中的所有值 # xiaoming_dict.values #返回指定键的值,如果值不在字典中返回default值 # xiaoming_dict.get(key,default= None) # xiaoming_dict.popitem 以上方法来自www.runoob.com
字典键的特性
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,
2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,
In [1]: dict1 = {"a":[1,2]} In [2]: print(dict1) {'a': [1, 2]} In [3]: dict2 = {"a":{"c":"d"}} In [4]: print(dict2) {'a': {'c': 'd'}} In [5]: "a" in dict2 Out[5]: True In [7]: test_dict = {"a" : 1,} In [8]: test_dict["a"] Out[8]: 1 In [9]: test_dict["b"] KeyError: 'b'