【问题标题】:Identify matching Class variables and return the variable name识别匹配的类变量并返回变量名
【发布时间】:2019-01-26 04:20:25
【问题描述】:

如果我想使用一个函数来识别一个类变量列表是否包含在一个字符串或变量中,我将如何识别文本匹配的特定变量。

class numbersChecks:
    number1 = "123"
    number2 = "456"
    number3 = "789"
    numberCheck = [number1, number2, number3]

sample = "63D456DF1"

def main():
    for i in numbersChecks.numberCheck:
        if i in sample:
            print(i)


if __name__ == '__main__':
    main()

所以在这个例子中,我可以取回456,但是如何取回实际的变量名,比如“number2”

我实际处理的数据是非常非常长的十六进制字符串,所以我尽量避免将长字符串复制到一个单独的字典中,例如{number1:123, number2:456}

【问题讨论】:

  • 为什么你首先需要这门课?为什么不直接使用字典?
  • 我将类导入 main,它们相当长。所以我试图访问类名并查看类变量是否与函数的返回变量匹配
  • 所以你应该考虑改变那个函数的返回值。在您的问题中更加详细。

标签: python string python-3.x list class


【解决方案1】:

您可以按索引或字典:

numbers_to_check = ['123', '456', '789']
for index, number in enumerate(numbers_to_check):
    if number in sample:
        print(index)

numbers_to_check = {'number1': '123', 'number2': '456', 'number3': '789'}
for key, number in numbers_to_check.items():
    if number in sample:
        print(key)

第三种方法是使用枚举:

from enum import Enum

class Numbers(Enum):
    number1 = "123"
    number2 = "456"
    number3 = "789"

for number in Numbers:
    if number.value in sample:
        print(number.name)

【讨论】:

  • 字典似乎是迭代列表中最快的,我想我只需要将 Class 变量移动到单个字典中即可使一切顺利进行。希望避免冗长的复制/粘贴过程。
猜你喜欢
  • 1970-01-01
  • 2017-09-23
  • 2015-10-23
  • 1970-01-01
  • 2015-12-10
  • 2016-06-16
  • 1970-01-01
  • 2022-01-06
  • 2012-09-08
相关资源
最近更新 更多