Python基础五 字典(dic)

一:字典(dic)

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

  字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

1.增

dic = {"name":"jin","age":18,"sex":"male"}

# dic['key'] = 'value'   key存在则改变,key不存在则添加

dic['name'] = 'qwe'
print(dic)
dic['hobby'] = '旅游'
print(dic)
# 输出结果:{'name': 'qwe', 'age': 18, 'sex': 'male', 'key': 'value'}
# 输出结果:{'name': 'jin', 'age': 18, 'sex': 'male', 'hobby': '旅游'}


# setdefault  key存在不变,不存在则添加

dic.setdefault('age','15')
print(dic)
dic.setdefault('hobby','旅游')
print(dic)
# 输出结果:
# {'name': 'jin', 'age': 18, 'sex': 'male'}
# {'name': 'jin', 'age': 18, 'sex': 'male', 'hobby': '旅游'}
View Code

2.删

dic = {"name":"jin","age":18,"sex":"male"}

# pop 按key删除,有返回值     如果没有key,可设置返回值(不设置返回值报错)

dic.pop('name')
print(dic)
# 输出结果:
# {'age': 18, 'sex': 'male'}

ret = dic.pop('hobby','没有此键')
print(ret)
print(dic)
# 输出结果:
# 没有此键
# {'name': 'jin', 'age': 18, 'sex': 'male'}

# clear   清空字典

dic.clear()
print(dic)
# 输出结果:{}

del    删除字典,删除键值对
del dic    删除字典

del dic['name']
print(dic)
# 输出结果:
# {'age': 18, 'sex': 'male'}

popitem    随机删除

ret = dic.popitem()
print(ret)
print(dic)
# 输出结果:
# ('sex', 'male')
# {'name': 'jin', 'age': 18}
View Code

3.改

dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}

# dic['key'] = 'value'   有 key 就覆盖,没有就添加

# update    把dic2中的 键值对  覆盖添加  到dic中,dic 不变
dic.update(dic2)
print(dic)
# 输出结果:
# {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75}
View Code

4.查

dic = {"name":"jin","age":18,"sex":"male"}

print(dic['name'])      #通过 key 直接查 value    没有 key 报错
print(dic['age'])
print(dic['name'],type(dic['name']))
print(dic['age'],type(dic['age']))
# 输出结果:
# jin <class 'str'>
# 18 <class 'int'>

# get     通过 key 直接查 value    没有 key 时,可设置返回值
print(dic.get('name'))
print(dic.get('name1'))
print(dic.get('name1','没有此键对'))
# 输出结果:
# jin
# None
# 没有此键对
View Code

5.字典的其他方法

dic = {"name":"jin","age":18,"sex":"male"}


keys = dic.keys()
print(keys,type(keys))
# 输出结果:
# dict_keys(['name', 'age', 'sex'])   <class 'dict_keys'>

values = dic.values()
print(values)
# 输出结果:
# dict_values(['jin', 18, 'male'])

items = dic.items()
print(items)
# 输出结果:
# dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])


for k in dic:
    print(k,type(k))
'''
输出结果:
name <class 'str'>
age <class 'str'>
sex <class 'str'>
'''

for k in dic.keys():
    print(k,type(k))
'''
输出结果:
name <class 'str'>
age <class 'str'>
sex <class 'str'>
'''

for v in dic.values():
    print(v)
'''
# 输出结果:
jin
18
male
'''

for k,v in dic.items():
    print(k,v)
'''
# 输出结果:
name jin
age 18
sex male
'''

for k in dic:
    print(k,dic[k])
'''
# 输出结果:
name jin
age 18
sex male
'''
View Code

6,字典的嵌套

dic = {
    'name': "金鑫",
    'name_list':[1, 2, 3, '李杰'],
    1: {
        'python10':['小黑', '萌哥'],
        '老男孩': {'name':'oldboy', 'age':56}
    }
}
#1,[1,2,3,'李杰']追加'wusir'

dic['name_list'].append('wusir')
print(dic)

#2, ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥

dic[1]['python10'].insert(1,'花哥')
print(dic)

#3, {'name':'oldboy','age':56} 添加一个键值对,hobby:男人

dic[1]['老男孩']['hobby'] = '男人'
print(dic)

dic[1]['老男孩'].setdefault('hobby','男人')
print(dic)
View Code
原文地址:https://www.cnblogs.com/zhuzhaoyang/p/8352343.html