检查“字典值”中是否存在列值

时间:2020-08-31 19:39:40

标签: python pandas for-loop

我想检查-colval中的values中是否存在dictionary项目
如果存在,则附加该值的对应的key,否则附加colval项。

CODE
这就是我所做的

colormap = []
for col in colval:
    for k,v in master_colors.items():
        for x in v:
            if col == x:
                 colormap.append(k)
            else:
                colormap.append(col)

但是,这给了我len(colormap)100045,实际上应该是class Department < ApplicationRecord self.table_name = 'custom_departments' end ,这是colval的长度

2 个答案:

答案 0 :(得分:1)

您应该测试颜色是否在列表中,而不是最后一个(最内部的)for 循环。如果是这样,则打破第二个循环。

colormap = []
for col in colval:
    for k,v in master_colors.items():
        if col.lower() in v:
            colormap.append(k)
            break
    colormap.append(col)

答案 1 :(得分:1)

问题在于colormap.append(col)在最里面的循环中。对于每个colval值,它将遍历master_colors dict中的每个值,并且每次与该特定值不匹配时,都会追加colval。相反,您需要等待直到遍历整个字典并确认当前colval值不匹配。只有这样,您才可以附加该colval值。

此外,您现在编写的方式区分大小写。如果您同时更改两个要与小写字母比较的字符串(如下所示),则效果很好。

colormap = []
for col in colval:
    match = False
    for k,v in master_colors.items():
        for x in v:
            if col.lower() == x.lower():
                colormap.append(k)
                match = True
        
    if not match:
        colormap.append(col)