如何在Python中找到符合条件的元素?

时间:2019-03-02 08:53:02

标签: python

我有4个元素a,b,c,d,但我不知道a,b,c,d的值。但是我知道a,b,c,d可以具有的值在(1,4)范围内。更具体地说,a可以是1或2或3或4。b,c,d同样适用。

我想检查其中的哪一个(a,b,c,d)的值为1并显示该元素。

例如,如果c = 1,则我希望显示c。

如何在Python中执行此操作?

3 个答案:

答案 0 :(得分:0)

假设您看字典

   d={'a':2,'b':3,'c':1,'d':1}

怎么样:

   for k in d.keys():
      if d[k]==1:
         print(k)

应打印“ c”和“ d”

答案 1 :(得分:0)

简单的方法是测试每个变量:

a = 3
b = 4
c = 2
d = 1

x = 1
if a == x:
    print('a')
elif b == x:
    print('b')
elif c == x:
    print('c')
elif d == x:
    print('d')

只要变量的数量相当小,就可以执行此操作。如果您经常需要执行此操作,建议您改用其他数据结构(例如dict

my_dict = {'a': 3, 'b': 4, 'c': 2, 'd': 1}
x = 1
matching_elements = [k for k in my_dict if my_dict[k] == x]
print(matching_elements[0])

如果多个变量(或在dict中为键)具有相同的值,则第一种方法将打印第一个方法,而第二个方法可能会或可能不会返回第一个方法,具体取决于天堂的对齐方式,具体取决于dict个未排序(尽管只会返回一个)。 如果要打印具有该值的所有变量,则可以用elif替换所有if,或者在第二种情况下用print(matching_elements)替换。

这种骇人听闻的方式(回来咬你)是这样的:

itervar = None  # If this does not exist the following will crash
for itervar in locals():
    if locals()[itervar] == x:
        print(itervar)

,这将打印所有与x值相同的变量。

答案 2 :(得分:0)

尝试使用pandas。更具体地说,熊猫Series

import pandas as pd

numbers = {'a':2,'b':4,'c':1,'d':3}

numseries = pd.Series(numbers)

boolseries = numseries == 1

print(list(numseries.index[boolseries]))

输出:['c']

对于这么少量的数据可能有点过大,但是如果您发现自己需要使用更大的数据集,那将非常有用。它还可以处理满足多个条件的元素。