python3 字典dict

'''
字典(dict)是python中唯一的一个映射类型。
它是以{}括起来的键值对组成,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址。然后将key-value保存在这个
地址中。这种算法被称为hash算法。在dict中存储的key-value中的key必须是可hash的,可哈希意味着不可变。

已知的可哈希(不可变)的数据类型:int, str, bool, tuple
不可哈希(可变)的数据类型:list, dict, set

语法:
    {key1:value1, key2:value2...}

注意:key必须是不可变(可哈希)的,value没有要求,可以保存任意类型的数据。
合法字典
'''
dic = {123: 456, True: 999, "id": 1, ("a", "b", "c"): "aaa"}
print(dic[123])  # 456
print(dic[True])  # 999
print(dic["id"])  # 1
print(dic[("a", "b", "c")])  # aaa

'''
不合法
'''
# dic = {[1, 2, 3]: "abc"}  # list是可变的,不能作为key  TypeError: unhashable type: 'list'
# dic = {{1: 2}: "apple"}  # dict是可变的,不能作为key  TypeError: unhashable type: 'dict'
# dic = {{1, 2, 3}: "orange"}  # set是可变的,不能作为key  TypeError: unhashable type: 'set'

'''
dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的,而hash表不是连续的,所以不能进行切片。
它只能通过key获取dict中的数据。
'''

'''
1、字典添加元素
'''
dic = {}
dic['name'] = "lily"  # 如果dict中没有出现这个key,就会新增一个key-value的组合进dict
dic['age'] = 18
print(dic)  # {'name': 'lily', 'age': 18}

'''
如果dict中没有出现过这个key-value,可以通过setdefault设置默认值。
如果dict中已经存在了,那么setdefault将不会起作用。
'''
dic.setdefault("salary")  # 也可以往里面设置值
print(dic)  # {'name': 'lily', 'age': 18, 'salary': None}
dic["salary"] = 10000
print(dic)  # {'name': 'lily', 'age': 18, 'salary': 10000}
dic.setdefault("salary", 12000)
print(dic)  # {'name': 'lily', 'age': 18, 'salary': 10000}

'''
2、字典删除元素
pop(key)
del dic[key]
'''
dic = {"a": "apple", "b": "banana", "o": "orange"}
print(dic)  # {'a': 'apple', 'b': 'banana', 'o': 'orange'}
ret = dic.pop("b")
print(ret)  # banana
print(dic)  # {'a': 'apple', 'o': 'orange'}

del dic["o"]
print(dic)  # {'a': 'apple'}

'''
随机删除
'''
dic = {"a": "apple", "b": "banana", "o": "orange"}
ret = dic.popitem()
print(ret)  # ('o', 'orange')
print(dic)  # {'a': 'apple', 'b': 'banana'}

'''
清空字典中的所有内容
'''
dic = {"a": "apple", "b": "banana", "o": "orange"}
dic.clear()
print(dic)  # {}

'''
3、修改字典中的元素
'''
dic = {"a": "apple", "b": "banana", "o": "orange"}
dic2 = {"s": "strawberry", "w": "watermelon", "b": "banana"}
dic.update(dic2)
print(dic)  # {'a': 'apple', 'b': 'banana', 'o': 'orange', 's': 'strawberry', 'w': 'watermelon'}
print(dic2)  # {'s': 'strawberry', 'w': 'watermelon', 'b': 'banana'}
dic2["s"] = "草莓"
print(dic2)  # {'s': '草莓', 'w': 'watermelon', 'b': 'banana'}

'''
4、查询
dic[key] 没有会报错
dic.get(key) 没有不会报错
'''
dic = {"a": "apple", "b": "banana", "o": "orange"}
print(dic["a"])  # apple
print(dic.get("b"))  # banana
print(dic.get("c"))  # None
print(dic.get("w", "watermelon"))  # watermelon

'''
5、keys()
values()
items()
'''
dic = {"a": "apple", "b": "banana", "o": "orange"}
print(dic.keys())  # dict_keys(['a', 'b', 'o'])
for k in dic.keys():
    print(k)
'''
打印结果:
a
b
o
'''

dic = {"a": "apple", "b": "banana", "o": "orange"}
for k in dic:
    print(k)
'''
打印结果:
a
b
o
'''

dic = {"a": "apple", "b": "banana", "o": "orange"}
print(dic.values())  # dict_values(['apple', 'banana', 'orange'])
for v in dic.values():
    print(v)
'''
打印结果:
apple
banana
orange
'''

dic = {"a": "apple", "b": "banana", "o": "orange"}
print(dic.items())  # dict_items([('a', 'apple'), ('b', 'banana'), ('o', 'orange')])
for k, v in dic.items():
    print(k, v)
'''
打印结果:
a apple
b banana
o orange
'''

'''
items()比较常用,keys()和values()相对比较用的少。
'''

'''
解构:解构的时候注意数量必须匹配
'''
a, b = 1, 2
print(a, b)  # 1 2

(c, d) = 3, 4
print(c, d)  # 3 4

# e, f = [1, 2, 3]  # 报错:ValueError: too many values to unpack (expected 2)
# print(e, f)

 

posted on 2019-11-14 15:49  lilyxiaoyy  阅读(787)  评论(0编辑  收藏  举报

返回
顶部