Python 数据类型:字典

一、字典简介

1. 字典由键值对组成,每个键与值用冒号隔开,每对用逗号分割,整体放在花括号中,如 {"name": "Tom", "age": 18}

In [1]: dict1 = {"name": "Jeny", "age": 18, "gender": "woman"}    # 定义一个字典

In [2]: dict1["name"]             # 访问字典里的值
Out[2]: 'Jeny'

In [3]: dict1["name"] = "Kimi"    # 修改字典里的值

二、字典的方法

In [1]: dict1 = {"name": "Jeny", "age": 18, "gender": "woman"}

In [2]: dict1.keys()                  # keys()用于查看字典中的所有key
Out[2]: ['gender', 'age', 'name']

In [3]: dict1.values()                # values()用于查看字典中的所有value
Out[3]: ['woman', 18, 'Jeny']

In [4]: dict1.items()                 # items()用于返回一个列表,这个列表的元素是由字典的键值对组成的元组
Out[4]: [('gender', 'woman'), ('age', 18), ('name', 'Jeny')]

In [5]: dict1.get("name")             # get()用于获取指定key的value值,如果没有这个key,则会返回None
Out[5]: 'Jeny'                        # 我们也可以通过dict1["name"]这种方法来获取指定key的value值,但如果没有这个key就会报错,所以get()方法相对好一些
                                      # get()另一种用法为:dict1.get("name", "Tom") 表示如果没有"name"这个key,就返回"Tom"这个value,而不是返回None

In [6]: dict1.has_key("name")         # has_key()用于判断字典中是否有指定的key
Out[6]: True

In [7]: dict1.copy()                  # copy()用于拷贝一个字典,通常我们会用变量来接收
Out[7]: {'age': 18, 'gender': 'woman', 'name': 'Jeny'}

In [9]: dict1.clear()                 # clear()用于清除字典中的所有键值对

In [11]: dict1.pop("age")             # pop()用于删除并返回指定key所对应的value
Out[11]: 18

In [12]: dict1.update(dict2)          # update()用于把字典dict2的键/值对更新到dict1里,相当于追加字典

In [13]: dict1.iteritems()            # iteritems()用法与items()一致,只是iteritems()返回的是一个迭代器,只有被调用的时候才会加载进来,类似range()与xrange()的区别

练习题:

写一个脚本,接收用户输入,然后把输入存到字典里

[root@localhost ~]$ cat 1.py 
#!/usr/bin/env python

info = {}
name = raw_input("Please input your name: ")
age = raw_input("Please input your age: ")
gender = raw_input("Please input your gender: ")

info['name'] = name
info['age'] = age
info['gender'] = gender

for k, v in info.items():
    print("%s: %s" % (k, v))
[root@localhost ~]$ python 1.py 
Please input your name: tom
Please input your age: 20
Please input your gender: M
gender: M
age: 20
name: tom

    

原文地址:https://www.cnblogs.com/pzk7788/p/10187069.html