3 回答

TA贡献1865条经验 获得超7个赞
尝试使用pandas。更具体地说,熊猫系列
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']
对于如此少量的数据来说可能有点矫枉过正,但是如果您发现自己需要使用更大的数据集来执行此操作,则非常有用。它还处理满足条件的元素不止一个的情况。

TA贡献1796条经验 获得超4个赞
假设你看字典
d={'a':2,'b':3,'c':1,'d':1}
怎么样:
for k in d.keys():
if d[k]==1:
print(k)
应该打印“c”和“d”

TA贡献1842条经验 获得超12个赞
简单的方法是测试每个变量:
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')
只要变量的数量相当少,就可以做到这一点。如果这是您经常需要做的事情,我建议您改用不同的数据结构(例如 a 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情况下,键)具有相同的值,第一个方法将打印第一次出现,而第二个方法可能会或可能不会返回第一个取决于天堂的对齐方式,因为dicts 没有被排序(它将返回虽然只有一个)。如果您想打印所有具有该值的变量,您可以将所有变量替换为elif,if或者,在第二种情况下,print(matching_elements).
hacky方式(会回来咬你)是这样的:
itervar = None # If this does not exist the following will crash
for itervar in locals():
if locals()[itervar] == x:
print(itervar)
这将打印所有与 x 具有相同值的变量。
添加回答
举报