Python基础学习
时间2020-2-16
4、字典dict:
{ }括起来的键值对
{键:值}
{key1:value1,key2:value2, …}
一对一对出现
1. 定义字典:
a = {'name': '嘿嘿', 'age': '12'}
print(a)
#{'name': '嘿嘿', 'age': '12'}
2.关于键和值 :
字典没有下标
(1)键key:键不可重复,可以为None
a = {None: '1', True: False, 'name': '嘿嘿嘿', 'age': 10, 10: 'hhh', (1, 2, 3): 'abc'}
print(a)
#{None: '1', True: False, 'name': '嘿嘿嘿', 'age': 10, 10: 'hhh', (1, 2, 3): 'abc'}
a = {[1, 23]: 'a'}
print(a)
#TypeError: unhashable type: 'list'
a = {{1: 2}: 'a'}
print(a)
#TypeError: unhashable type: 'dict'
由上可知键不可以是列表和字典,原因是列表和字典都是可以改变的类型,其他的6类都是不可动态改变的
键可以为整数类型
键可以为布尔类型
键可以为浮点类型
键可以为字符串类型
键可以为元组
键可以为None
——————不可变—————
键不可以可以为列表
键可以为字典
——————可变——————
注:若键值重复,后面的键会覆盖掉前面的键
a = {'name': '嘿嘿', 'name': '哈哈'}
print(a)
#{'name': '哈哈'}
(2)值value:值可重复,可以为None
可以为任意类型
a = {None: '1', True: False, 'name': '嘿嘿嘿', 'age': 10, 10: 'hhh', (1, 2, 3): 'abc', 1: [2, 3], 2: {'name2': None}}
print(a)
#{None: '1', True: [2, 3], 'name': '嘿嘿嘿', 'age': 10, 10: 'hhh', (1, 2, 3): 'abc', 2: {'name2': None}}
3.字典的内置函数及方法:
# d = {'name': '嘿嘿', 'age': 1239, 'score': 123, 'height': 2134}
# print(len(d))
# print(max(d)) # 判断键最大值
# print(min(d))
# d.clear() # 清空
# print(d)
# print(d.pop('age')) # 无默认值,按键删除并返回 有返回值
# print(d.popitem()) # 返回并删除最后一项 没有值 默认最后
# print(d)
# d_ = d.copy() # 浅复制,复制地址
# print(id(d['name']))
# print(id(d_['name']))
# print(d.get('name')) # 取值 取key值返回value
# print(d['name']) # 等价
# d.update(age=123)#更新--》改值
# print(d)
# print(d.items()) # 返回列表
# dict_items([('name', '嘿嘿'), ('age', 1239), ('score', 123), ('height', 2134)])
# for key, value in d.items():
# print(key, value)
# print(d.values()) # 获取所有值组成列表
# print(d.keys()) # 获取所有键组成列表
# 可以通过key找value,反过来不行
# for key in d.keys():
# print(key, d.get(key))
# d_ = d.fromkeys('name', 'age') # 用前置当键,后置为值,额外赋值则是都赋一样的值
# d__ = d.fromkeys(('name', 'age'), ('heihei', 123))
# print(d__)
# d.setdefault('name', 'hhh')
# print(d)
#额外:
# 排序:按value的大小排序
dict1 = {'name': "张三", 'age': 50}
dict2 = {'name': "李四", 'age': 20}
dict3 = {'name': "王五", 'age': 32}
dict4 = {'name': "赵六", 'age': 61}
# t.sort(key=operator.itemgetter(’b‘),reverse=True) #默认为升序, reverse=True为降序
list = [dict1, dict2, dict3, dict4]
list_ = sorted(list, key=lambda e: e['age'])
print(list_)