试图查看变量是否包含在Django列表中

时间:2018-06-29 01:27:20

标签: python django if-statement tuples

我试图通过在我的视图中使用以下命令来查找所选国家/地区是否在元组列表中:

df_filled = df %>%
    group_by(variable_B) %>%
    mutate(variable_A = first(na.omit(variable_A)))

df_filled %>%
    group_by(variable_A, variable_B) %>%
    summarise(total=sum(variable_C))

如果我打印second_tier.profile.country,我有if second_tier.profile.country in COUNTRIES: 当我打印国家/地区时,我得到:

CA

所以if语句应该返回True,但是返回为False。

2 个答案:

答案 0 :(得分:2)

您有一个元组元组,那么您需要在COUNTRIES中进行迭代。

>>> for x in COUNTRIES:
...     if second_tier.profile.country in x:
...         print ("ok")

答案 1 :(得分:2)

您当前正在元组的元组中搜索字符串。您需要确保COUNTRIES是所有字符串才能完成此工作。您可以使用一些简单的列表推导来转换嵌套的元组。

使用元组拆包:

COUNTRIES = [x, _ for x in COUNTRIES]

使用索引:

COUNTRIES = [x[0] for x in COUNTRIES]

从每个元组中提取第一个元素(国家/地区)并将其放入列表中。

那么您可以做:

if second_tier.profile.country in COUNTRIES:

,它将返回True

或者,您也可以遍历COUNTRIES并明确匹配second_tier.profile.country

for country, _ in COUNTRIES:
    if second_tier.profile.country == country:
        return True

您也可以在此处使用any()

any(second_tier.profile.country == x for x, _ in COUNTRIES)

找到了任何匹配项的返回True

注意:由于您只是执行简单的查找,因此可以将COUNTRIES转换为 set ,这将允许使用O(1)查找O(N)查找。

我还在上面使用_来丢弃不需要的值,例如每个元组的第二项。