Python字典键值对的添加和遍历

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python字典键值对的添加和遍历相关的知识,希望对你有一定的参考价值。

添加键值对
首先定义一个空字典
>>> dic=
直接对字典中不存在的key进行赋值来添加
>>> dic['name']='zhangsan'
>>> dic
'name': 'zhangsan'
如果key或value都是变量也可以用这种方法
>>> key='age'
>>> value=30
>>> dic[key]=value
>>> dic
'age': 30. 'name': 'zhangsan'
这里可以看到字典中的数据并不是按先后顺序排列的,如果有兴趣,可以搜一搜数据结构中的——哈希表
从python3.7开始,字典按照插入顺序,实现了有序。修改一个已存在的key的值,不影响顺序,如果删了一个key后再添加该key,该key会被添加至末尾。标准json库的dump(s)/load(s)也是有序的
还可以用字典的setdefault方法
>>> dic.setdefault('sex','male')
'male'
>>> key='id'
>>> value='001'
>>> dic.setdefault(key,value)
'001'
>>> dic
'id': '001', 'age': 30. 'name': 'zhangsan', 'sex': 'male'
参考技术A 对列表中不存在的key直接进行赋值来添加

对列表中存在的,但是key和value都是变量的可以直接替换

有两种方法,分别如下所示:

Python ❀ 字典

文章目录

1、字典使用


在Python中字典是一系列键值对的集合,每一个键都对应一个值,可以使用键的访问来获取到值的内容,与键相关联的内容可以是数字、字符串、列表甚至是字典;可以将任何对象用作字典的值;

1.1 访问字典内的值

若是想获取与键相关联的值,可以依次指定字典名称和括号内的键;

dir = "name":"zxc","age":25,"adress":"bj"
print(dir["name"])

输出结果:

zxc

1.2 添加一个键值对

字典是一种动态结构,可以随时在其中添加一组键值对;当需要修改字典内的某项键值对时,可以直接使用其相匹配的键进行修改;

d1 = "name":"zxc","age":25,"adress":"bj"
d1["tel"]=150
d1["age"]=24
print(d1)

输出结果:

'name': 'zxc', 'age': 24, 'adress': 'bj', 'tel': 150

1.3 创建一个空白字典

在某些情况下,创建一个空白字典,然后将不同的键值对以遍历的方式进行填补到该空白字典;

d1 = 

1.4 删除键值对或字典

若是需要删除某个键值对,采用del函数即可;

d1 = "name":"zxc","age":25,"adress":"bj"
del d1["adress"]
print(d1)

del d1

输出结果:

"name":"zxc","age":25

2、字典遍历


一个字典可能存储了较少的数据,也可能存储了相当多的数据,因此对键值对的遍历方法非常值得学习;默认的遍历字典只遍历字典内的键,并不会主动遍历值,因此就需要了解其他的函数,以获取不同的键值对信息;

d1 = "name":"zxc","age":25,"adress":"bj"
for k in d1:
    print(k)

输出结果:

name
age
adress

2.1 遍历所有键值对

使用for循环遍历字典,可以使用items()函数获取到键值对的键与值两个数据,分别使用不同的变量对应;

d1 = "name":"zxc","age":25,"adress":"bj"
for k,v in d1.items():
    print(k,v)

输出结果:

name zxc
age 25
adress bj

键值对的返回顺序与存储顺序不一定相同,Python只关注键值对的对应关系,并不关心键值对的存储顺序;

2.2 遍历字典内的键

在字典的遍历中,可能只需要遍历字典的键,因此就可以使用key()函数;在遍历字典时,默认遍历字典内的键,因此key()函数可以省略;

d1 = "name":"zxc","age":25,"adress":"bj"
for k in d1.keys():
    print(k)

输出结果:

name
age
adress

2.3 按顺序遍历所有键

在字典中并不关心键值对的顺序,因此在使用items()与key()函数时,其输出的顺序是随机的,因此若是需要以顺序进行输出键值对时,就需要用到函数sorted()函数;排序时需要注意数据类型(str与int无法进行排序,需要转换格式后进行排序);

d1 = "name":"zxc","age":25,"adress":"bj"
for k in sorted(d1):
    print(k)

输出结果:

adress
age
name

2.4 遍历字典内的值

之前说明了如果只遍历字典内的键,若是只需要字典内的值,可以使用vlaue()函数获取;

d1 = "name":"zxc","age":25,"adress":"bj"
for v in d1.values():
    print(v)

输出结果:

zxc
25
bj

3、字典嵌套


前面提到了在字典的键值对内是可以嵌套新的字典,因此在某些场景下,可以使用字典的嵌套进行一些数据存储的操作;

3.1 字典与列表的嵌套

创建一个包含两个字典的列表;

d1 = "first_name":"z","last_name":"xc"
d2 = "age":11,"adress":"bj"
l1 = [d1,d2]
print(l1)

输出结果:

['first_name': 'z', 'last_name': 'xc', 'age': 11, 'adress': 'bj']

创建一个包含两个列表的字典;

l1 = [1,2,3]
l2 = [2,3,4]
d3 = "aaa":l1,"bbb":l2
print(d3)

输出结果:

'aaa': [1, 2, 3], 'bbb': [2, 3, 4]

当字典嵌入列表时,可以遍历并判断来修改字典的键值对,代码如下:

d1 = "first_name":"z","last_name":"xc"
d2 = "age":11,"adress":"bj"
l1 = [d1,d2]
print(l1)

for i in l1[0:2]:
    # 当first_name等于z时,修改last_name为bb
    if d1["first_name"] == "z":
        d1["last_name"]="bb"
   # 当age为11时,修改adress为sx
    if d2["age"] == 11:
        d2["adress"]="sx"
print(l1)

输出结果:

['first_name': 'z', 'last_name': 'xc', 'age': 11, 'adress': 'bj']
['first_name': 'z', 'last_name': 'bb', 'age': 11, 'adress': 'sx']

3.2 字典与字典的嵌套

在字典中嵌入字典的代码如下:

d1 = "aa1":"bb1", "cc1":"dd1"
d2 = "aa2":"bb2", "cc3":"dd3"
d3 = "aa3":"bb2", "cc3":"dd3"
d = "name":d1, "age":d2,"tel":d3
print(d)

输出结果:

'name': 'aa1': 'bb1', 'cc1': 'dd1', 'age': 'aa2': 'bb2', 'cc3': 'dd3', 'tel': 'aa3': 'bb2', 'cc3': 'dd3'

首先定义三个字典,然后定义一个包含三个字典的全字典,获取全字典的键值对,进行判断修改;

d1 = "aa1":"bb1", "cc1":"dd1"
d2 = "aa2":"bb2", "cc3":"dd3"
d3 = "aa3":"bb2", "cc3":"dd3"
d = "name":d1, "age":d2,"tel":d3

for k,v in d.items():
    # 当键匹配到name时,值为d1字典
    if k == "name":
        v["aa1"]="bbb"
    # 当键匹配到age时,值为d2字典
    elif k == "age":
        v["cc3"]="ddd"
    # 当键匹配到tel时,值为d3字典
    elif k == "tel":
        v["aa3"]="bbb"
print(d)

输出结果:

'name': 'aa1': 'bbb', 'cc1': 'dd1', 'age': 'aa2': 'bb2', 'cc3': 'ddd', 'tel': 'aa3': 'bbb', 'cc3': 'dd3'

以上是关于Python字典键值对的添加和遍历的主要内容,如果未能解决你的问题,请参考以下文章

Python ❀ 字典

python字典中键值对的值为中文,打印成转义字符,怎么解决

反转字典中键值对的顺序(Python)[重复]

从包含键值对的字符串中获取python字典

Python基础入门—字典dict

Python培训知识总结系列- 第二章Python数据结构第四部分-字典操作