多个字典/字符串通过不应该

2024-10-02 08:20:55 发布

您现在位置:Python中文网/ 问答频道 /正文

标题有点模糊,但我想不出一个方法来恰当地描述我的问题在这么短的空间。你知道吗

我有一个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循环遍历过时元组中的字典,应该获取所有与已删除字典不匹配的字典,并将它们存储在新元组中。你知道吗

但事实并非如此。由于某些我看不到的原因(可能是一个我只是看不见的简单错误),它跳过了旧元组中的所有字典,而将新元组留空。你知道吗

有什么想法吗?你知道吗


Tags: and数据textnameforget字典time
1条回答
网友
1楼 · 发布于 2024-10-02 08:20:55

当前,只有当字典中的每个值都不同于已删除的字典时,才能从旧元组中获取字典。你知道吗

根据您的问题,如果字典中的任何值与已删除的字典不同(即,您要从新元组中排除的唯一字典是已删除的字典),则似乎要从旧元组中获取字典。你知道吗

if语句中,将每个and切换到or,您的代码应该按照预期的方式运行(假设我是对的,您只想排除已删除的字典)。你知道吗

相关问题 更多 >

    热门问题