我有如下代码:
for item in items:
if item.data["position"] == '5':
item.delete()
continue
elif item.data["lang"] == 'SPA':
message_body = my_message_spa[item.data["position"]]
else:
message_body = my_message_eng[item.data["position"]] # English (default)
message = client.messages.create(
item.data["phone_number"],
body=message_body,
from_="xxxx"
)
# increment the position for this user
item.data["position"]+=1
此代码用于向用户发送消息。
项目是词典列表,其中包含用户的电话号码,日期,语言和位置。
位置是指它们在消息序列中的位置。
我想检查一个用户的位置,如果他们已经收到5
条消息,则应该将其从列表中删除,然后继续查找下一个用户。如果用户的位置为<5
,则应进入else if
语句并根据满足的条件发送消息。
词典列表具有以下结构:
{'phone_number': '+1234567890', 'position': 5, 'lang': 'ENG', 'Date': '2018-08-17 00:03:46'}
{'phone_number': '+0987654321', 'position': 2, 'lang': 'ENG', 'Date': '2018-12-18 07:10:47'}
该代码以前运行良好,而我要添加/测试的新部分是if语句检查位置,但是好像if语句根本没有被调用,直接进入下面的elif
检查'lang'
并发送消息并为用户增加位置。在我的情况下,用户的位置会增加到6
。
答案 0 :(得分:3)
您似乎在错误地比较该值。您正在尝试将字符串“ 5”与整数5进行比较。
if item.data["position"] == '5':
请注意5前后的引号。
例如:
print(1 == "1")
print(1 == 1)
第一个返回False,第二个返回True。
在遍历列表时,也不应从列表之类的内容中删除项目。而是尝试创建副本或使用列表推导。