第13课 字典

一、字典

1、字典的定义:{ }   <class 'dict'>

>>> dict1 = {}
>>> type(dict1)
<class 'dict'>

2、dict1 = {键1:值,键2:值}

dict2 = {'name': 'Tom', 'age':18, 'weight': 130}

3、键值成对出现,不然会报错。

>>> dict2 = {'name': 'Tom', 'age':18, 'weight': 130}
>>> dict3 = {'name': 'jacky', 'age': 18, 'class'}
SyntaxError: invalid syntax

4、通过键来查找元素,没有下标的概念。

>>> dict2 = {'name': 'Tom', 'age':18, 'weight': 130}
>>> dict2['weight']
130

1)用len(dict1)来获取字典的长度

>>> dict2 = {name:'Tom', age:18 , weight:130}
>>> len(dict2)
3

5、字典里没有同名的key(键),就算有,后面的key也会把前面同名的key覆盖掉。

>>> dict3 = {'name':'Tom', 'age':18, 'name':'Jacky'}
>>> dict3
{'name': 'Jacky', 'age': 18}

6、增加元素----格式:dict1[键名] = 值

1)python2--增加字典元素的位置是随机的;

2)python3--从字典后面依次增加

>>> dict3 = {'name':'Tom', 'age':18}
>>> dict3['weight'] = 136
>>> dict3
{'name': 'Tom', 'age': 18, 'weight': 136}

7、如果该字典里面没有这个key,那么打印这个key对应的值会报错----keyerror

>>> dict3 = {'name': 'Tom', 'age': 18, 'weight': 136}
>>> print(dict3['class'])
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    print(dict3['class'])
KeyError: 'class'

8、增加字典的元素:dict1[新键名] = 对应的值

9、字典可以存储任意类型

# 一个键对应的值可以是任意类型
students = {
    'Jim Green': {'age': 18,   
                  'height': 186,
                  'weight': 180,
                  'nickname': 'Jimy'},
    'Linda Smith':{
        'age': 23,
        'height': 168,
        'weight': 108,
        'nickname': 'sweet'  }
}

print(students['Linda Smith'])


# 执行结果 
{'age': 23, 'height': 168, 'weight': 108, 'nickname': 'sweet'}

打印Jim的年龄信息

print(students['Jim Green']['age'])  # 打印Jim的年龄

#输出结果
18

10、关于key的类型,value的类型

1)key的类型:int、str、float和tuple,但是不能为list(列表)、dict(字典)。hash:散列表----不能改变的类型

注意:对键值操作时不要刻意改变key。

>>> dict1 = {1: 'int型', 3.14: 'float型', 'yy': 'str型', (6,7,8,9): 'tuple型'}
>>> dict1
{1: 'int型', 3.14: 'float型', 'yy': 'str型', (6, 7, 8, 9): 'tuple型'}

当key的类型为列表时会报错

>>> dict1 = {[1,2,'yy']: 'list型'}
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    dict1 = {[1,2,'yy']: 'list型'}
TypeError: unhashable type: 'list'

key的类型为字典也报错

>>> dict1 = {{'name': 'Tom'}: 33}
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    dict1 = {{'name': 'Tom'}: 33}
TypeError: unhashable type: 'dict'

2)value(值):可以为任意类型

 

二、常用操作

1、判断字典里是否有这个key,可以用---key in dict1;在python2中dict1.has.key(键)的形式。

>>> dict1 = {1: 'int型', 3.14: 'float型', 'yy': 'str型', (6,7,8,9): 'tuple型'}
>>> 3.14 in dict1
True
>>> 'xx' in dict1
False

2、关于字典的删除元素:字典里面的key相当于list里面的index(下标)

1)del dict1['name']

>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> del dict1['name']
>>> dict1
{'age': 21, 'weight': 130}

2) value =  dict1.pop('name')

>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> dict1.pop('name')
'Tom'
>>> dict1
{'age': 21, 'weight': 130}

3、字典的遍历

1)for one in dict1 ----one依次取key本身的值

>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> for one in dict1:
    print(one)

    
name
age
weight

2)打印字典的值----dict的[one]

>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> for one in dict1:  # one 指的是字典值的内容
    print(dict1[one])

    
Tom
21
130

3)打印字典特定的值-----dict1[one['age']]

students = {
    'Jim Green': {'age': 18,
                  'height': 186,
                  'weight': 180,
                  'nickname': 'Jimy'},
    'Linda Smith':{
        'age': 23,
        'height': 168,
        'weight': 108,
        'nickname': 'sweet'  }
}

for one in students:
    print(students[one]['age'])

# 执行结果
18
23

4)students.items()----遍历字典的键值对[(键1,  值1),  (键2,  值2)]

print(students.items())

# 结果是一个列表,列表中包含元组
dict_items([('Jim Green', {'age': 18, 'height': 186, 'weight': 180, 'nickname': 'Jimy'}), ('Linda Smith', {'age': 23, 'height': 168, 'weight': 108, 'nickname': 'sweet'})])

把信息从students.items()中取出来---for name, info in students.items():

students = {
    'Jim Green': {'age': 18,
                  'height': 186,
                  'weight': 180,
                  'nickname': 'Jimy'},
    'Linda Smith':{
        'age': 23,
        'height': 168,
        'weight': 108,
        'nickname': 'sweet'  }
}


for name, info in students.items():
    print(name, info)

# 执行结果
Jim Green {'age': 18, 'height': 186, 'weight': 180, 'nickname': 'Jimy'}
Linda Smith {'age': 23, 'height': 168, 'weight': 108, 'nickname': 'sweet'}

4、清空字典内容:

1)dict1.clear()----清空字典本身内容

>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> dict1.clear()
>>> dict1
{}

2)dict1 = {}---把dict1指向一个空字典

>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> dict1 = {}
>>> dict1
{}

5、获取字典中所有的key----dict1.keys(),返回结果在一个列表中

 dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> dict1.keys()
dict_keys(['name', 'age', 'weight'])

6、获取字典中所有的value-----dict1.values(),返回结果在一个列表中

>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> dict1.values()
dict_values(['Tom', 21, 130])

7、获取字典中所有的key,value,返回结果在一个列表中

>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> dict1.items()
dict_items([('name', 'Tom'), ('age', 21), ('weight', 130)])

8、dict1.update----增加字典的元素

>>> dict1 = {'name': 'Tom', 'age': 21, 'weight': 130}
>>> dict1.update({1:1, 2:2})
>>> dict1
{'name': 'Tom', 'age': 21, 'weight': 130, 1: 1, 2: 2}

练习:2个字典所有的key都一样,请打印具有相同的键值,并打印键值对

dict1 = {1: 'a', 2: 'b', 3: 'c', 4: 100, 5: 200}
dict2 = {1: 'x', 2: 'y', 3: 'z', 4: 100, 5: 200}


for num1 in dict1:
    for num2 in dict2:
        if num1 == num2 and dict1[num1] == dict2[num2]:
            print(num1, dict1[num1])


# 执行结果
4 100
5 200

 

posted @ 2018-12-05 00:12  风吹麦浪听涛声  阅读(212)  评论(0编辑  收藏  举报