【问题标题】:Find which variable equals a value [duplicate]找出哪个变量等于一个值[重复]
【发布时间】:2017-06-24 00:32:20
【问题描述】:

我有一个 Python 中的变量列表:

a = 1  
b = 0  
c = 0

这些来自获取用户输入以处理某些字段的脚本的一部分,因此 1 表示“对 'a' 做某事”,而 0 表示“不包括”。因此,了解脚本后面需要使用哪些字段(即哪些字段等于 1)会很有用。

找出 a、b 或 c 中哪一个等于 1 的最佳方法是什么?

我试过这个方法(来自here):

test_list = [a,b,c]  
next((x for x in test_list if x == 1), None)

它返回1,但我正在寻找它返回a。这是前提条件,脚本中的下一步将获取等于1 的变量,并通过变量名而不是值对它们进行处理。

我可以这样做:

if a == 1:
    print "a"
if b == 1:
...

但我怀疑有一种很好的 Pythonic 方法可以从等于特定值的变量列表中找到变量的名称。

【问题讨论】:

  • 为什么不把大量不同值的变量放在一个列表中呢?
  • 你的问题真的没有意义;变量没有名字。见nedbatchelder.com/text/names.html
  • 不要这样做。使用容器,如列表或字典。
  • 似乎是 X-Y 问题。你想要完成什么让你想做这么奇怪的事情?
  • @FredLarson 我敢打赌家庭作业...

标签: python python-2.7


【解决方案1】:

您应该考虑使用字典(映射)而不是列表,因为名称仅引用对象而不是对象本身:

d = dict(a = 1, b = 2, c = 0)
print(next((k for k, v in d.items() if v == 1), None))
# a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    相关资源
    最近更新 更多