基于多个值条件打印字典键[重复]

Posted

技术标签:

【中文标题】基于多个值条件打印字典键[重复]【英文标题】:Printing dictionary keys based on multiple value conditions [duplicate] 【发布时间】:2019-06-20 02:22:29 【问题描述】:

我有一个字典,每个键都有两个值,例如:

my_dict = 'Stock A': (100, 0.5), 'Stock B': (20, 0.9), 'Stock C': (40, 0.75), 'Stock D': (45, 0.3)

如果两个值都满足特定要求,我想做的是返回字典键。因此,假设我希望每个键的第一个值超过 30,第二个值低于 0.6。这两个条件都需要满足才能返回密钥。所以在这种情况下,我希望股票 A 和股票 D 被退回。我很高兴单独打印键,但如果有办法用键和两个值附加一个新字典,那就太好了。由于我对字典的了解非常不完整,我的价值观没有标题,它们只是价值观,只是为了让事情变得更加困难。

我设想使用的代码类似于:

if value in my_dict > 30 and second value in my_dict < 0.6:
   new_dict.append(key: value, second value)

我对这种尝试完全不准确感到很尴尬,但我只是不知道如何解决这个问题。

【问题讨论】:

【参考方案1】:

试试这个代码

my_dict = 'Stock A': (100, 0.5), 'Stock B': (20, 0.9), 'Stock C': (40, 0.75), 'Stock D': (45, 0.3)

new=
for (stock,values) in my_dict.items():
     first=values[0]
     second=values[1]
     if (first>30 and second<0.6):
          new[name]=(first,second)

希望对你有帮助

【讨论】:

【参考方案2】:

您可以使用字典推导创建一个新的字典。

my_dict = 'Stock A': (100, 0.5), 'Stock B': (20, 0.9), 'Stock C': (40, 0.75), 'Stock D': (45, 0.3)

new_dict = k:v for k,v in my_dict.items() if v[0]>30 and v[1] <0.6
print (new_dict)

结果:

'Stock A': (100, 0.5), 'Stock D': (45, 0.3)

【讨论】:

【参考方案3】:
my_dict = 'Stock A': (100, 0.5), 'Stock B': (20, 0.9), 'Stock C': (40, 0.75), 'Stock D': (45, 0.3)

result=key:value for key,value in my_dict.items() if value[0]>30 and value[1]<.6

print(result)

输出:

'Stock A': (100, 0.5), 'Stock D': (45, 0.3)

【讨论】:

【参考方案4】:

您需要使用.items() 对dict 进行迭代,然后您可以将元组解包为2 个变量(firstValsecondVal):

my_dict = 'Stock A': (100, 0.5), 'Stock B': (20, 0.9), 'Stock C': (40, 0.75), 'Stock D': (45, 0.3)
new_dict = 

for key, v in my_dict.items():
    firstVal, secondVal = v

    if firstVal > 30 and secondVal < 0.6:
        new_dict[key] = v

print new_dict

打印:

'Stock D': (45, 0.3), 'Stock A': (100, 0.5)

【讨论】:

【参考方案5】:

list comprehensions 创建这个dictionary -

my_dict = 'Stock A': (100, 0.5), 'Stock B': (20, 0.9), 'Stock C': (40, 0.75), 'Stock D': (45, 0.3)

my_dict_out = dict([ (k,r) for k,r in my_dict.items() if r[0]>30 and r[1] <0.6])

print(my_dict_out)
    'Stock A': (100, 0.5), 'Stock D': (45, 0.3)

注意:这个答案被标记了很多次negative,因为我使用.iteritems()而不是.items(),它不适用于Python 3.+。因此,如果您使用的是Python 2.+,则使用.iteritems(),否则使用.items()

【讨论】:

【参考方案6】:
my_dict = 'Stock_A': (100, 0.5), 'Stock B': (20, 0.9), 'Stock C': (40, 0.75), 'Stock D': (45, 0.3)
new_dict =  # Dictionary in which the TRUE conditions are stores


# Function which makes the comparison
def comp(Val1,Val2):
    Values = [30,0.6]
    if Val1 > Values[0] and Val2 < Values[1]:
        return True,(Val1,Val2)
    else:
        return False,None

# Creates the new dictionary   
for key in my_dict:
    Res = comp(my_dict[key][0],my_dict[key][1])
    if Res[0]:
        new_dict[key] = Res[1]


print(new_dict)







'Stock_A': (100, 0.5), 'Stock D': (45, 0.3)

【讨论】:

以上是关于基于多个值条件打印字典键[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在字典中查找重复值并打印重复元素的键

为字典中的一个键附加多个值[重复]

以pythonic方式打印字典中最大值的键[重复]

具有多个值的C#字典如何[重复]

Python Dictionary交换键:值存在于多个键中时的值对[重复]

字典中键重复时——pycharm和python IDLE打印的一个差别