练习题

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)


 

 

 

 

 

版权声明:本文为kateli原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/kateli/p/8622897.html