如何编写带有字典的循环

时间:2019-06-24 08:08:37

标签: python pandas loops dataframe dictionary

我用键和值创建了字典,并想在一个循环中编写一个循环:

for key,val in dict.items():
 def contains(x, y):
    result = np.nan
    for i in x:
        if i.lower() in y.lower():
            result = key
    return result
    df['Test'] = df['Countrylist'].apply(lambda x: contains([val], x))

因此,我想检查“字典”中的值是否在“国家/地区”列表中,如果是,则为新的“列测试”提供“字典中的键的值”。

但是我的代码不起作用...

预期输出:

Countrylist  Bla1 Bla2   Test
Germany       12  12    "Here should be the Key of the Dic"

1 个答案:

答案 0 :(得分:1)

每个评论:

def contains(x, y):
    for i in x:
        if i.lower() in y.lower():
            return True
    return False

for key,val in dict.items():
    df['Test'] = df['Countrylist'].apply(lambda x: key if contains([val], x) else np.nan)

同样,由于您没有提供输入/输出对,因此很难检查它是否满足您的要求。特别是contains(['foo', 'bar'], 'FOOTBALL') == True(可能是您想要的,但从函数名称中看不出来)。

此外,请注意,此代码在循环中多次重新分配df['Test']。该列的最终值取决于哪个循环迭代是最后一个循环迭代(对于Python版本<= 3.5-3.6,see the accepted answer here,您不能依赖此循环迭代。)