标题有点模糊,但我想不出一个方法来恰当地描述我的问题在这么短的空间。你知道吗
我有一个Python(3.x)脚本,可以跟踪用户为自己设置的提醒。你知道吗
提醒的数据保存在字典条目中,然后存储在元组中(因为PyMySQL将数据作为元组从数据库中提取)。你知道吗
当需要删除提醒时,您需要创建一个新的元组而不使用该字典,因为元组是不可变的。这意味着使用for循环遍历字典,只导入与已删除的字典不匹配的字典。你知道吗
这就是我的问题所在。我将把代码片段放在下面。你知道吗
global tReminders
tReminders2 = ()
for dic in tReminders:
if user_name != dic.get("user_name") and reminder_text != dic.get("reminder_text") and group_name != dic.get("group_name") and set_time != dic.get("set_time") and reminder_time != dic.get("reminder_time"):
print("ADDING: " + str(dic))
tReminders2 += (dic,)
else:
print("SKIPPING: " + str(dic))
tReminders = tReminders2
例如,初始元组数据为:
({'user_name': 'phil', 'reminder_text': 'test1', 'group_name': 'test', 'set_time': 1533074918, 'reminder_time': 1533074928}, {'user_name': 'phil', 'reminder_text': 'test2', 'group_name': 'test', 'set_time': 1533074920, 'reminder_time': 1533074930}, {'user_name': 'phil', 'reminder_text': 'test3', 'group_name': 'test', 'set_time': 1533074923, 'reminder_time': 1533074933})
如您所见,for循环遍历过时元组中的字典,应该获取所有与已删除字典不匹配的字典,并将它们存储在新元组中。你知道吗
但事实并非如此。由于某些我看不到的原因(可能是一个我只是看不见的简单错误),它跳过了旧元组中的所有字典,而将新元组留空。你知道吗
有什么想法吗?你知道吗
当前,只有当字典中的每个值都不同于已删除的字典时,才能从旧元组中获取字典。你知道吗
根据您的问题,如果字典中的任何值与已删除的字典不同(即,您要从新元组中排除的唯一字典是已删除的字典),则似乎要从旧元组中获取字典。你知道吗
在
if
语句中,将每个and
切换到or
,您的代码应该按照预期的方式运行(假设我是对的,您只想排除已删除的字典)。你知道吗相关问题 更多 >
编程相关推荐