python dict 字典

简介: python dict 字典

python dict 字典

文章目录

python dict 字典

1. 字典特点

2. 字典内置函数

3. 字典内置方法

4. 方法运用

4.1 增

4.2 删

4.3 改

4.4 查

4.5 创

5. 设置默认值

6. 字典排序

7. 字典拷贝

7.1 浅拷贝

7.2 深拷贝

8. 字典遍历

8.1 遍历key

8.2 遍历值

8.3 遍历keys和values

9. 函数字典传参

10. 字典推导式

1. 字典特点

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号

例如:d = {key1 : value1, key2 value2 }

键必须是唯一的,但值则不必

不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

2. 字典内置函数

  • 1 cmp(dict1, dict2)比较两个字典元素。
  • 2 len(dict)计算字典元素个数,即键的总数。
  • 3 str(dict)输出字典可打印的字符串表示。
  • 4 type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。

3. 字典内置方法

1 dict.clear()                    删除字典内所有元素
2 dict.copy()                     返回一个字典的浅复制
3 dict.fromkeys(seq[, val])       创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
4 dict.get(key, default=None)     返回指定键的值,如果值不在字典中返回default值
5 dict.has_key(key)               如果键在字典dict里返回true,否则返回false
6 dict.items()                    以列表返回可遍历的(键, 值) 元组数组
7 dict.keys()                     以列表返回一个字典所有的键
8 dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 dict.update(dict2)              把字典dict2的键/值对更新到dict里
10 dict.values()                  以列表返回字典中的所有值
11 pop(key[,default])             删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12 popitem()                      随机返回并删除字典中的一对键和值。

4. 方法运用

4.1 增

$ cat dict1.py
#!/usr/bin/python
#!---coding:utf-8----
dic1={'age': 18, 'name': 'alex', 'hobby': 'girl'}
dic2={'1':'111','2':'222'}
dic2={'1':'111','name':'222'}
dic1.update(dic2)
print(dic1)
print(dic2)
for k in dic2:  #等同update()
    dic1[k] = dic2[k]
print dic1
[root@localhost dict]$ python dict1.py 
{'1': '111', 'hobby': 'girl', 'age': 18, 'name': '222'}
{'1': '111', 'name': '222'}
{'1': '111', 'hobby': 'girl', 'age': 18, 'name': '222'}

第二种

dic2={'1':'111','2':'222'}
dic2['xx']='cccc'
print dic2
$ python dict15.py 
{'1': '111', 'xx': 'cccc', '2': '222'}

4.2 删

  • del
  • pop(‘key’)
  • popitem()
  • clear()
cat dict3.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First', 'weight': 56, 'gender': 'man'};
del dict['Name']; # 删除键是'Name'的条目
print dict
print(dict.pop('Age')) #删除字典中指定键值对,并返回该键值对的值
ret = dict.pop('Class')
print(ret)
print(dict)
a = dict.popitem() #随机删除某组键值对,并以元组方式返回值
print(a, dict)
dict.clear();     # 清空词典所有条目
del dict ;        # 删除词典
print dict
[root@localhost dict]# python dict3.py 
{'gender': 'man', 'Age': 7, 'weight': 56, 'Class': 'First'}
7
First
{'gender': 'man', 'weight': 56}
(('gender', 'man'), {'weight': 56})
<type 'dict'>

4.3 改

$ cat dict2.py
#!/usr/bin/python
#!---coding:utf-8----
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
dict['Age'] = 8; # 修改已存在的键值
dict['School'] = "DPS School"; # 增加新的键值对
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
[root@localhost dict]$ python dict2.py 
dict['Age']:  8
dict['School']:  DPS School

4.4 查

$ cat dict4.py 
#!/usr/bin/python
#!---coding:utf-8----
dict={'age': 18, 'name': 'alex', 'hobby': 'girl'}
print(dict['name'])
print(list(dict.keys()))
print(list(dict.values()))
print(list(dict.items()))
it = dict.iteritems()
print it
print dict.get("name", "girl") 
print dict.get("e", 18)   
if "name" in dict:  #等同get()
    print dict["name"]
else:
    print "None"
[root@localhost dict]$ python dict4.py 
alex
['hobby', 'age', 'name']
['girl', 18, 'alex']
[('hobby', 'girl'), ('age', 18), ('name', 'alex')]
<dictionary-itemiterator object at 0x7f93657ad418>
alex
18
alex

4.5 创

dict.fromkeys()

$ cat dict5.py 
#!/usr/bin/python
seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
print "New Dictionary : %s" %  str(dict)
dict = dict.fromkeys(seq, 10)
print "New Dictionary : %s" %  str(dict)
[root@localhost dict]$ python  dict5.py 
New Dictionary : {'age': None, 'name': None, 'sex': None}
New Dictionary : {'age': 10, 'name': 10, 'sex': 10}

5. 设置默认值

$ cat dict6.py 
#!/usr/bin/python
#!---coding:utf-8----
dict = {}
dict.setdefault("a")
print dict
dict["a"] = "apple"
dict.setdefault("a","default")
print dict
[root@localhost dict]$ python  dict6.py 
{'a': None}
{'a': 'apple'}

6. 字典排序

$ cat dict7.py 
#!/usr/bin/python
#!---coding:utf-8----
dict = {"a" : "apple", "b" : "grape", "c" : "orange", "d" : "banana"}
#按照key排序
print sorted(dict.items(), key=lambda d: d[0])
#按照value排序 
print sorted(dict.items(), key=lambda d: d[1])
[root@localhost dict]$ python dict7.py 
[('a', 'apple'), ('b', 'grape'), ('c', 'orange'), ('d', 'banana')]
[('a', 'apple'), ('d', 'banana'), ('b', 'grape'), ('c', 'orange')]

7. 字典拷贝

7.1 浅拷贝

$ cat dict8.py 
#!/usr/bin/python
#!---coding:utf-8----
dict = {"a" : "apple", "b" : "grape"}
dict2 = {"c" : "orange", "d" : "banana"}
dict2 = dict.copy()
print dict2
[root@localhost dict]$ python dict8.py 
{'a': 'apple', 'b': 'grape'}

7.2 深拷贝

$ cat dict9.py 
#!/usr/bin/python
#!---coding:utf-8----
import copy
dict = {"a" : "apple", "b" : {"g" : "grape","o" : "orange"}}
dict2 = copy.deepcopy(dict)
dict3 = copy.copy(dict)   
print(copy1 == copy2)   # True
print(copy1 is copy2)   # False
dict2["b"]["g"] = "orange"  #dict2深拷贝相当于独立object
print dict
dict3["b"]["g"] = "orange"
print dict
[root@localhost dict]$ python dict9.py
True
False
{'a': 'apple', 'b': {'o': 'orange', 'g': 'grape'}}
{'a': 'apple', 'b': {'o': 'orange', 'g': 'orange'}}

8. 字典遍历

8.1 遍历key

cat dict10.oy
#!/usr/bin/python
#!---coding:utf-8----
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
for k in dict:
 print k
for k in dict:
 print k,
for key in dict.iterkeys():
    print key
for key in dict.keys():
    print key,
[root@localhost dict]# python dict10.oy 
a
c
b
d
a c b d a
c
b
d
a c b d

8.2 遍历值

$ cat dict11.py
#!/usr/bin/python
#!---coding:utf-8----
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
for k in dict:    #遍历value
  print dict[k]
for k in dict:    #遍历value不换行
  print dict[k],
for value in dict.itervalues():
    print value,
for value in dict.values():
    # d.values() -> [2, 1, 3]
    print value
[root@localhost dict]$  python dict11.py 
apple
grape
banana
orange
apple grape banana orange apple grape banana orange apple
grape
banana
orange

8.3 遍历keys和values

$ cat dict12.py
#!/usr/bin/python
#!---coding:utf-8----
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
for key, value in dict.iteritems():
    # d.iteritems: an iterator over the (key, value) items
    print key,'corresponds to',dict[key]
for key, value in dict.items():
    # d.items(): list of d's (key, value) pairs, as 2-tuples
    # [('y', 2), ('x', 1), ('z', 3)]
    print key,'corresponds to',value
[root@localhost dict]$  python dict12.py 
a corresponds to apple
c corresponds to grape
b corresponds to banana
d corresponds to orange
a corresponds to apple
c corresponds to grape
b corresponds to banana
d corresponds to orange

9. 函数字典传参

$ cat dict13.py
#!/usr/bin/python
#!---coding:utf-8----
dic={"m": 1,"n": 2,"q": 3}
def dics(qwe):
    print qwe
dics(dic)
[root@localhost dict]$ python dict13.py 
{'q': 3, 'm': 1, 'n': 2}

10. 字典推导式

语法一:

key:字典中的key
value:字典中的value
dict.items():序列
condition:条件表达式
key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
value_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
{key_exp:value_exp for key,value in dict.items() if condition}

语法二:

key:字典中的key
value:字典中的value
dict.items():序列
condition:条件表达式
key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
value_exp1:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp1处理
value_exp2:在for循环中,如果条件表达式condition不成立(即条件表达式不成立),返回对应的key,value并作key_exp,value_exp2处理
{key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}
$ cat dict14.py
#!/usr/bin/python
#!---coding:utf-8----
dict1 = {"a":10,"B":20,"C":True,"D":"hello world","e":"python教程"}
dict2 = {key:value for key,value in dict1.items() if key.islower()}
print(dict2)
dict3 = {key.lower():value  for key,value in dict1.items() }
print(dict3)
dict4 = {key:value if key.isupper() else "error" for key,value in dict1.items() }
print(dict4)
[root@localhost dict]$  python3.8 dict14.py 
{'a': 10, 'e': 'python教程'}
{'a': 10, 'b': 20, 'c': True, 'd': 'hello world', 'e': 'python教程'}
{'a': 'error', 'B': 20, 'C': True, 'D': 'hello world', 'e': 'error'}

✈推荐阅读:

相关文章
|
19天前
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
14 1
|
3月前
|
存储 JSON 索引
一文让你彻底搞懂 Python 字典是怎么实现的
一文让你彻底搞懂 Python 字典是怎么实现的
61 13
|
3月前
|
存储 数据安全/隐私保护 Python
Python常用数据结构——字典的应用
Python常用数据结构——字典的应用
42 2
|
3月前
|
Python
python 如何将QueryDict转化为dict | 18
python 如何将QueryDict转化为dict | 18
|
3月前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
159 4
|
3月前
|
Python
Python 字典删除下标前两个
Python 字典删除下标前两个
21 1
|
2月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
40 0
|
2月前
|
存储 自然语言处理 数据库
Python字典操作实现文章敏感词检索
Python字典操作实现文章敏感词检索
33 0
|
2月前
|
存储 JSON 数据处理
分析、总结Python使用列表、元组、字典的场景
分析、总结Python使用列表、元组、字典的场景
33 0
|
2月前
|
存储 Java Serverless
【Python】字典
【Python】字典
35 1