python列表循环_python列表及for循环要注意的知识点

本文介绍了如何在Python中处理列表嵌套字典,通过for循环遍历查找特定键值。示例代码展示了在用户输入名字后,检查列表中是否存在该名字的详细过程。由于原始代码中else块的问题导致了重复输出,提出了使用外部变量来避免这种情况的解决方案。
摘要由CSDN通过智能技术生成

列表可以嵌套不同的数据类型,如下是在列表中嵌套字典a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]

for i in a:

print(i)

wKiom1m9MTfhOhXeAAARW93kFck588.png

我们可以用for循环去显示每个字典

如果想找一个名字为zhouziqi的信息,思路是这样的,让a列表中的每个字典一个个的赋值给i,这样i就是字典,如果想要找到字典中的'name'就可以用i['name']a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]

for i in a:

print(i['name'])

这个在以后会经常用到哦

下面我们说一个for循环要注意的小点,直接看例子:a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]

name = input("Please input name:")

for i in a: #把a列表中的字典一个个的赋予给变量i

if name == i['name']: #判断用户输入name的值是否等于在i字典中key为name的值

print("the name is exist") #如果存在就输出正确信息

else:

print("None") #这是不正确的信息

从上面代码中看不出任何的毛病,你可以执行一下:

wKiom1m9NJPRKBCqAAAMSbizaQc023.png

为什么明明我们输入了zhouziqi这个名字是存在的,却又说这个name存在,又说这个名字不存在呢?

因为我们的a列表里面有两个字典对吧,当我们执行上面代码的第二行的时候,也就是让用户输入一个值,我们输入zhouziqi,这时候name就等于zhouziqi,进入第三行代码,i的第一个值就是字典{"name":'zhouziqi','contact':17806762943},然后进行第四行代码,判断name的值是否等于{"name":'zhouziqi','contact':17806762943}字典中key为name的值,结果zhouziqi是等于zhouziqi的,这时候等式成立了,第五行代码,打印正确信息,这就出现了the name is exist,那为什么还有个None的错误信息打印出来呢,因为a里面是两个字典,刚刚我们{"name":'zhouziqi','contact':17806762943},现在就用第二个字典{"name":'zhouyu','contact':13246910612},发现不成立就打印出错误信息。这和我们想的不一样呀,那么我们能不能让它判断有这个名字了就自己break出来呢。这样还是有问题的哦,你看看以下代码a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]

name = input("Please input name:")

for i in a:

if name == i['name']:

print("the name is exist")

break

else:

print("None")

我们执行一下,这样输入zhouyu

wKiom1m9N3aCXZE2AAAPWz0I7_4028.png

为什么会出现None,因为和上面的一样,i的第一个值是{"name":'zhouziqi','contact':17806762943}判断出name(也就是zhouyu)不等于i['name'](也就是zhouziqi)所以就打印出None,然后第二个字典是{"name":'zhouyu','contact':13246910612},这才匹配成功输出the name is exist。那我们应该怎么办呢?

因为不管怎么样,都会出现None,那么我们能不能不要这个else呢,答案是确定的,可以不要这个else,然后在外面定义一个值为false_number默认值为0,然后在for循环里面,如果我们找到用户输入的name就更改false_number的值为1,然后用break跳出循环,在外面我们再去判断false_number是否为1,如果是说明这个name就存在于数组中的字典中,否则就不存在a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]

name = input("Please input name:")

false_number = 0

for i in a:

if name == i['name']:

false_number = 1

if false_number == 1:

break

if false_number == 1:

print("the name is exist")

else:

print("None")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值