首页 > 解决方案 > 字典中的值未更新是预期的-python

问题描述

大家好,我被字典逻辑困住了,任何人都可以帮助我

我想检查 set 中的值是否等于列表中的项目 "lll" ,如果是,将新键,字典中的值设置为 true 否则为 false

这是我的代码:

o={1, 2}
oo=[1,2,4]
lll=[{'permission_id': 1, 'permission_name': 'can_view_test'},\
     {'permission_id': 2, 'permission_name': 'can_edit_test'}, 
     {'permission_id': 4, 'permission_name': 'can_delete_test'}]

new_list=[]
dict_perm_with_true = {}
for  item in lll:
        dict_perm_with_true["permission_id"]=item["permission_id"]
        dict_perm_with_true["permission_name"]=item["permission_name"]
        for  i in o:
            if i ==item.get("permission_id"):
                dict_perm_with_true["InThisRole"]  = True
            else:
                dict_perm_with_true["InThisRole"] = False
        new_list.append(dict_perm_with_true.copy())
print(new_list)

结果是:

[{'permission_id': 1, 'permission_name': 'can_view_test', 'InThisRole': False}, {'permission_id': 2, 'permission_name': 'can_edit_test', 'InThisRole': True}, {'permission_id': 4、'permission_name': 'can_delete_test', 'InThisRole': False}]

预期结果 :

[{'permission_id': 1, 'permission_name': 'can_view_test', 'InThisRole': True}, {'permission_id': 2, 'permission_name': 'can_edit_test', 'InThisRole': True}, {'permission_id': 4、'permission_name': 'can_delete_test', 'InThisRole': False}]

任何帮助感谢它

标签: pythonlistdictionary

解决方案


检查其他方式,如果permission_idotrue其他false

o={1, 2}
oo=[1,2,4]
lll=[{'permission_id': 1, 'permission_name': 'can_view_test'},\
     {'permission_id': 2, 'permission_name': 'can_edit_test'}, 
     {'permission_id': 4, 'permission_name': 'can_delete_test'}]

new_list=[]

for  item in lll:
        dict_perm_with_true = {}
        dict_perm_with_true["permission_id"]=item["permission_id"]
        dict_perm_with_true["permission_name"]=item["permission_name"]
        # check if id in set 
        if item.get("permission_id") in o:
            dict_perm_with_true["InThisRole"]  = True
        else:
            dict_perm_with_true["InThisRole"] = False
        new_list.append(dict_perm_with_true.copy())
print(new_list)

推荐阅读