3.22 day5 字典

练习题

dic = {"name_list":['张三','lisi','隔壁王叔叔'], 'dic2':{'name':'太白','age':12}, }

#1 ,给列表追加一个元素:'旺旺'

#2,给列表lisi全部大写

#3,给dic2 对应的字典添加一个键值对:hobby:girl.

dic = {"name_list":['张三','lisi','隔壁王叔叔'],'dic2':{'name':'太白','age':12}}

dic['name_list'].append('旺旺') print(dic) dic['name_list'][1]= dic['name_list'][1].upper() print(dic) dic['dic2']['hobby']='girl' print(dic)

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

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

可以放任意数据类型

数据类型的分类:

可变(不可哈希):不可变数据类型 list,dic,set

  字典的值,不可变数据类型

不可变(可哈希):对原字符串没有任何改变,都是新的字符串 int,True,bool,str,tuple。

  字典的键,是任意的数据类型

容器类型

  容器:list,tuple,dic 可承载各种数据类型

字典的键不能重复,是唯一的

字典的顺序:

  python 3.5之前, 字典是无序的

  python 3.6开始,字典创建的时候,按照一定的顺序插入的数值,看起来是有序的,

----------------------------------------

增:

1.有则覆盖,无则添加

dic = {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}

dic['hobby'] = 'girl'
print(dic)

{'name': 'jin', 'k': 'v', 'hobby': 'girl', 'sex': 'male', 'age': 18}

dic = {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}

dic['k'] = 'a'
print(dic)

{'age': 18, 'name': 'jin', 'k': 'a', 'sex': 'male'}

2.setdefault 无则添加,有则不变


setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。

dic = {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
dic.setdefault('hobby')
print(dic)

{'sex': 'male', 'hobby': None, 'k': 'v', 'name': 'jin', 'age': 18}

  

dic = {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
dic.setdefault('hobby','girl')
print(dic)

{'age': 18, 'name': 'jin', 'k': 'v', 'sex': 'male', 'hobby': 'girl'}

1.pop:python3.6 里删除最后一个,成对删除,通过键删除键值对
dic = {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} dic.pop('age') print(dic)

{'name': 'jin', 'k': 'v', 'sex': 'male'}

dic.pop('hobby')
print(dic)

报错
print(dic.pop('hobby',None))


不报错,又返回值None,返回你设定的值

2.clear 清空

dic.clear()
print(dic)

{}

3.del dic['name']

del dic['name']
print(dic)

{'k': 'v', 'age': 18, 'sex': 'male'}

1.

dic['name'] = '太白'
print(dic)

{'age': 18, 'name': '太白', 'sex': 'male', 'k': 'v'}

2.针对两个字典改,将dic键值对覆盖并添加到dic2 update

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

dic2.update(dic)

print(dic)
print(dic2)

{'sex': 'male', 'age': 18, 'name': 'jin'}
{'weight': 75, 'sex': 'male', 'name': 'jin', 'age': 18}

查 get,单个查询,for是多个查询

dic = {"name":"jin","age":18,"sex":"male"}
print(dic.get('name'))

jin

dic = {"name":"jin","age":18,"sex":"male"}
print(dic.get('name1',None))

dic = {"name":"jin","age":18,"sex":"male"}
print(dic.get('name1'))不存在的默认返回none

其他方法:keys():不是列表,可循环,不能有索引,values(),item()

dic = {"name":"jin","age":18,"sex":"male"}
print(dic.keys())
print(type(dic.keys()))

dict_keys(['age', 'name', 'sex'])
<class 'dict_keys'>

for i in dic.keys():
    print(i)
for i in dic:
    print(i)

默认打印键

sex
name
age

li = list(dic.keys())
print(li)

把键打印出列表形式

#特殊类型:dic转化成list
print(list(dic.keys()))
['age', 'name', 'sex']

#分别赋值

a,b = 2,3
print(a,b)
a,b = [2,3]
print(a,b)

a,b = (2,3)
print(a,b)
2,3

#面试题

a = 4
b =5
a,b = b,a
print(a,b)

5,4
print(dic.values())
for i in dic.values():
    print(i)

dict_values(['male', 'jin', 18])
male
jin
18
print(dic.items())
for i in dic.items():
    print(i)

dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])
('name', 'jin')
('age', 18)
('sex', 'male')
dic = {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}

for k,v in dic.items():
    print(k,v)

return:

k v
sex male
age 18
name jin




dic.setdefault('k','v') print(dic) # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} dic.setdefault('k','v1') # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} print(dic)


原文地址:https://www.cnblogs.com/kateli/p/8622897.html