【Python基础】字典

字典的定义

字典是一种映射类型,即它的每一个成员包含key和value两个部分。

Python中字典使用{}来包含成员,每一个成员用key:value来表示。

key不能对应多个value。

空的字典直接使用一个{}来表示:

if __name__ == "__main__":
    aDict = {}
    print type(aDict)

这里打印的是<type 'dict'>。

字典的key必须是不可变类型,且必须是唯一的。

不可变类型包括字符串,整型,元组等。

下面是一个例子:

if __name__ == "__main__":
    aDict = {}
    aDict[1] = "one"            # integer as key.
    aDict["one"] = 1            # string as key.
    aDict[(1,2)] = "one two"    # tuple as key.
    print aDict

打印的结果是{(1, 2): 'one two', 1: 'one', 'one': 1}。

这里还可以看到几点:

1. 字典的成员可以直接添加,也就是说字典是可变的;

2. 成员的添加可以通知直接赋值就可以;

当然字典也可以直接在初始化的时候赋值:

if __name__ == "__main__":
    aDict = {1: "one", "one": 1, (1, 2): "one two"}
    print aDict

字典的操作函数

首先说两个不算函数的操作:

1. aDict[k] = v,表示给字典赋值;

2. aDict[k],表示访问字典中的值;

Python中有del语句可以用来删除字典中的成员:

if __name__ == "__main__":
    aDict = {1: "one", "one": 1, (1, 2): "one two"}
    del aDict[1]
    del aDict["one"]
    del aDict[(1, 2)]
    print aDict

打印的结果是{}。

Python中有字典的工厂函数dict(),用来构建字典,下面是几个例子:

if __name__ == "__main__":
    aDict = dict(x = 1, y = 2)
    print aDict
    bDict = dict([('x', 1), ('y', 2)])
    print bDict
    cDict = dict([['x', 1], ['y', 2]])
    print cDict

要获取字典的长度,即键值对的个数,可以使用len()函数:

if __name__ == "__main__":
    aDict = dict(one = 1, two = 2)
    print aDict         # {'two': 2, 'one': 1}
    print len(aDict)    # 2

字典中的key可以用in/not in来判断:

if __name__ == "__main__":
    aDict = dict(one = 1, two = 2)
    if("one" in aDict): # yes
        print "yes"
    else:
        print "no"
    
    if (1 in aDict):    # no
        print "yes"
    else:
        print "no"

可以看到之后key可以用来判断,用value不能用来判断。

字典用于字符串格式化

字典的格式化输出:

if __name__ == "__main__":
    aDict = {"name": "John", "age": 18}
    print "My name is %(name)s, my age is %(age)f" % aDict

这里需要注意的是%()之后还需要跟具体的转换类型,比如s表示转字符串,f表示转浮点数。

还需要注意,格式化转换时,键只能是字符串:

aDict = {"name": "John", 1: 18} 
print "My name is %(name)s, my age is %(1)f" % aDict      # Error

会报错:

Traceback (most recent call last):
  File "d:\Code\Python\src\dict.py", line 25, in <module>
    print "My name is %(name)s, my age is %(1)f" % aDict      # Error
KeyError: '1'

字典的方法

下面是字典的方法举例:

#coding=utf-8
#
# This file talks about dictionary in Python.
#

if __name__ == "__main__":
    aDict = {"name": "John", "age": 18}
    bDict = aDict.copy()    # 生成一个新的字典,与原字典有相同的键值对;需要注意一个浅拷贝和深拷贝的问题,深拷贝用deepcopy()函数.
    print bDict     # {"age": 18, 'name': 'John'}.
    bDict.clear()   # 清除所有字典项.
    print bDict     # {}.
    aList = ["name", "age"]
    print {}.fromkeys(aList)    # {'age': None, 'name': None} # 将列表中的值作为键创建新的字典,值为None.
    print aDict.get("name")     # John # get()也用来访问值,但是它遇到不存在的键时不会报错,而是返回None.
    print aDict.get("sex")      # None.
    #print aDict["sex"]         # 报错.
    print aDict.has_key("sex")  # False # 判断键是否存在.
    print aDict.items()         # [('age', 18), ('name', 'John')] # 返回成元组的列表.
    print aDict.iteritems()     # <dictionary-itemiterator object at 0x0000000003480368> # 返回的是一个元组的迭代器.
    print aDict.keys()          # ['age', 'name'] # 返回键列表.
    print aDict.iterkeys()      # <dictionary-keyiterator object at 0x00000000031C0368> # 返回的是一个键的迭代器.
    print aDict.values()        # [18, 'John'] # 返回值列表.
    print aDict.itervalues()    # <dictionary-valueiterator object at 0x0000000003060368> # 返回的是一个值得迭代器.
    print aDict.setdefault("name", "NA")    # John # 原始存在的键则返回其值.
    print aDict.setdefault("sex", "Male")   # Male # 原始不存在的键则添加,并返回其值.
    print aDict                 # {'age': 18, 'name': 'John', 'sex': 'Male'}.
    print aDict.pop("name")     # John # 删除一个键值对,并返回键对应的值.
    print aDict                 # {'age': 18, 'sex': 'Male'}.
    print aDict.popitem()       # ('age', 18)  # 随机的弹出一个键值对.
    print aDict                 # {'sex': 'Male'}.
    updateDict = {"age": 80, "sex": "Female"}
    aDict.update(updateDict)    # 更新字典,包括添加和修改.
    print aDict                 # {'age': 80, 'sex': 'Female'}.
### Python 基础字典数据结构教程 #### 创建字典 Python 中的字典可以通过多种方式创建。最常见的方式是使用花括号 `{}` 并指定键值对[^1]: ```python my_dict = {'name': 'Alice', 'age': 25} ``` 另一种创建字典的方法是通过 `dict()` 构造函数以及 `.fromkeys()` 方法来初始化带有默认值的字典[^2]: ```python empty_dict_with_keys = dict.fromkeys(['name', 'age']) print(empty_dict_with_keys) # 输出: {'name': None, 'age': None} ``` #### 访问字典元素 要访问字典中的值,可以使用方括号并提供相应的键名: ```python value_of_name = my_dict['name'] print(value_of_name) # 输出: Alice ``` 如果尝试获取不存在的键,则会引发 KeyError 错误;因此建议先检查键是否存在或使用 get() 方法作为更安全的选择。 #### 修改字典 更新现有条目只需重新赋值给特定键即可改变其关联的值: ```python my_dict['age'] = 26 ``` 向字典中添加新项同样简单——只需要为新的键分配一个值: ```python my_dict['city'] = 'Beijing' ``` 删除操作可通过 del 关键词完成: ```python del my_dict['city'] ``` #### 字典方法概述 一些常用的字典内建方法包括但不限于 keys(), values(), items(). 这些方法分别返回字典所有的键、所有值和由 (key,value) 对组成的列表视图对象. ```python all_keys = list(my_dict.keys()) all_values = tuple(my_dict.values()) items_list = set(my_dict.items()) print(all_keys) # ['name', 'age'] print(all_values) # ('Alice', 26) print(items_list) # {('name', 'Alice'), ('age', 26)} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值