您的位置:首页 > 编程语言 > Python开发

Python基础——字典

2016-08-01 22:28 381 查看

字典的定义

字典是一种映射类型,即它的每一个成员包含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