欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Python中的字典dict

发布时间:2024/7/23 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Python中的字典dict 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

字典是python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。键不可修改且不能重复的,所以其可能是数字、字符串或元组,而不可能是list。字典中键-值对被称为项(item),其语法如下:

{"Alice": 12, "Beth": 11, "Danny": 14}

1 函数dict

>>> items = [('name', 'Alice'), ('age', 12)] >>> d = dict(items) >>> d {'name': 'Alice', 'age': 12} >>> d = dict(name='Beth', age=11) >>> d {'name': 'Beth', 'age': 11}

2 基本操作

len(d):返回字典d中的(键值对数)项数。

d[k]:返回与键k相关联的值。

d[k] = v:将v的值关联到键k。

del d[k]:删除键为k的项。

k in d:检查字典d是否包含键为k的项。

# 一个简单的数据库 # 一个将人名用作键的字典。每个人都用一个字典表示。 # 字典包含键‘phone’和‘addr’,它们分别与电话号码和地址相关联 people = {"Alice": {"phone": "2341","addr": "Foo drive 23"},"Beth": {"phone": "9102","addr": "Bar street 42"},"Cecil": {"phone": "3158","addr": "Baz avenue 90"} }# 电话号码和地址的描述性标签,供打印输出使用 labels = {"phone": "phone number","addr": "address" }name = input("Name:")# 要查找电话号码还是地址? request = input("Phone number (p) or address (a)? ")# 使用正确的键: if request == "p":key = "phone"if request == "a":key = "addr"# 仅当名字是字典包含的键时才打印信息 if name in people:print("{}'s {} is {}".format(name, labels[key], people[name][key]))

运行结果:

Name:Beth Phone number (p) or address (a)? p Beth's phone number is 9102

3 字典方法

    3.1 clear

清除所有的字典项,没有返回值。

d = {} d["name"] = "Gumby" d["age"] = 42 print(d) d.clear() print(d) {'name': 'Gumby', 'age': 42} {}

    3.2 copy

返回一个新字典,这个方法是浅复制。当替换副本的值时,原件不受影响;然而,如果修改副本中的值,原件也会改变。因为原件指向的也是被修改的值。

# 浅复制 x = {"username": "admin", "machines": ["foo", "bar", "baz"]} y = x.copy() y["username"] = "mlh" y["machines"].remove("bar") print("y:", y) print("x:", x)

 运行结果:

y: {'username': 'mlh', 'machines': ['foo', 'baz']} x: {'username': 'admin', 'machines': ['foo', 'baz']}

 为解决这个问题,可以使用模块copy中的deepcopy实现深复制,将同时复制值及其包含的所有值。

# 深复制 from copy import deepcopy d = {} d["names"] = ["Alfred", "Bertrand"] c = d.copy() dc = deepcopy(d) d["names"].append("Clive") print("c:", c) print("dc:", dc)

 运行结果:

c: {'names': ['Alfred', 'Bertrand', 'Clive']} dc: {'names': ['Alfred', 'Bertrand']}

    3.3 fromkeys

创建一个新字典,其中包含指定的键,且默认每个键对应的值都是None。

d = dict.fromkeys(["name", "age"]) print(d) d = dict.fromkeys(["name", "age"], "(unknown)") print(d)

运行结果:

{'name': None, 'age': None} {'name': '(unknown)', 'age': '(unknown)'}

    3.4 get

通常,使用[键]的方式访问字典中没有的项,将会引发错误。而用get方法来访问不存在的键时,不会引发异常,而是返回None,若指定默认值,这样将返回指定的默认值而不是None。

x = {"username": "admin", "machines": ["foo", "bar", "baz"]} print(x.get("username", "N/A")) print(x.get("addr")) print(x.get("addr", "N/A"))

运行结果:

admin None N/A

    3.5 items

返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。该列表属于特殊类型字典视图,这只是底层字典的反映,而不是复制。

d = {"title": "Python Web Site", "url": "http://www.python.org", "spam": 0} it = d.items() print(it) print(len(it)) print(("spam", 0) in it) d["spam"] = 1 print(("spam", 0) in it)

运行结果:

dict_items([('title', 'Python Web Site'), ('url', 'http://www.python.org'), ('spam', 0)]) 3 True False

    3.6 keys

返回一个字典试图,其中包含指定字典中的键。

>>> d = {"title": "Python Web Site", "url": "http://www.python.org", "spam": 0} >>> d.keys() dict_keys(['title', 'url', 'spam'])

    3.7 pop

获取与指定键相关联的值,并将该键-值对从字典中删除。

>>> d = {"title": "Python Web Site", "url": "http://www.python.org", "spam": 0} >>> d {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0} >>> d.pop("title") Python Web Site >>> d {'url': 'http://www.python.org', 'spam': 0}

     3.8 popitem

随机的弹出一个字典项,因为字典项的顺序是不确定的,没有“最后一个元素”的概念。

>>> d = {"title": "Python Web Site", "url": "http://www.python.org", "spam": 0} >>> d {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0} >>> d.popitem() ('spam', 0) >>> d {'title': 'Python Web Site', 'url': 'http://www.python.org'}

    3.9 updata

使用一个字典中的项来更新另一个字典。

>>> d = {"title": "Python Web Site", "url": "http://www.python.org", "spam": 0} >>> d {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0} >>> x = {"title": "Python Language Website"} >>> d.update(x) >>> d {'title': 'Python Language Website', 'url': 'http://www.python.org', 'spam': 0}

    3.10 values

返回一个由字典中的值组成的字典试图。

>>> x = {"username": "admin", "machines": ["foo", "bar", "baz"]} >>> x.values() dict_values(['admin', ['foo', 'bar', 'baz']])

 

总结

以上是生活随笔为你收集整理的Python中的字典dict的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。