如果字典值等于数字,如何用字典中的项目打印值?
how to print a value with items in a dictionary if a dict value equals a number?
我有这段代码可以检查某个值是否小于 than/equal 到(等)我的号码限制。它按需要工作并打印出与这些操作员检查相匹配的相应键和值。但我也希望它打印出它们各自属于匹配操作员检查的两个类别之一,作为一个字符串,只要它显示将它们放入哪个类别,任何东西都可以工作。我知道如何对列表执行此操作,并且使用 R 会更好,但不确定 python 中的字典如何实现此操作。
这是我的代码,用于重现我所做的事情--
创建字典:
d = {'Tony':5, 'Mary':7.8, 'Joe':8.9,'Lee':6.8, 'Luke':11.5, 'Sally':5.8,'Billy':15.2, 'Josè':11.1, 'Jesus':18.9,'Frank':10.5}
检查值:
lessthn = {k:v for (k,v) in d.items() if v < 10.9 }
morethneqlto = {k:v for (k,v) in d.items() if v >= 10.9 }
结果示例(我现在编造这个来展示结果是什么样的 - 这与我创建的字典值不匹配):
{'Tony': 6,
'Sally': 5.8,
'Mary': 7.9,
'Billy': 9.8,
'John': 2.8,
'Joe': 9.5}
{'Luke': 16,
'Amy': 15.8,
'Gillan': 17.9,
'Sandra': 19.8,
'Jesus': 12.8,
'Josè': 19.5}
将其放在每个匹配值旁边的期望结果,类似这样的东西或任何可能的东西:
{'Tony': 6 : Good,
'Sally': 5.8 : Good,
'Mary': 7.9 : Good,
'Billy': 9.8 : Good,
'John': 2.8 : Good,
'Joe': 9.5 : Good}
{'Luke': 6 : Bad,
'Amy': 5.8 : Bad,
'Gillan': 7.9 : Bad,
'Sandra': 9.8 : Bad,
'Jesus': 2.8 : Bad,
'Josè': 9.5 : Bad}
我想知道答案可能是什么,但没有运气,我尝试了这样的事情:
morethaneqlto.append('Bad')
但是 append 不适用于 dict
和类似的东西,但我知道这是不对的,并且认为可能有更简单的解决方案:
if < 11.1 d.values:
print ("Good")
任何能使我的输出与所需输出一致的解决方案都很棒
您可以使用 pandas
创建一个 DataFrame
,根据相应的值
有条件地标记每个条目
>>> import pandas as pd
>>> import numpy as np
>>> d = {'Tony':5, 'Mary':7.8, 'Joe':8.9,'Lee':6.8, 'Luke':11.5, 'Patient6':5.8,'Patient7':15.2, 'Josè':11.1, 'Jesus':18.9,'Frank':10.5}
>>> df = pd.DataFrame({'Names': d.keys(), 'Value': d.values()})
>>> df['Label'] = np.where(df['Value'] > 10, 'Good', 'Bad')
>>> df
Names Value Label
0 Tony 5.0 Bad
1 Mary 7.8 Bad
2 Joe 8.9 Bad
3 Lee 6.8 Bad
4 Luke 11.5 Good
5 Patient6 5.8 Bad
6 Patient7 15.2 Good
7 Josè 11.1 Good
8 Jesus 18.9 Good
9 Frank 10.5 Good
字典中的值必须是单个对象。如果您同时需要数字和指示符,则必须将它们放在一个对象中。例如,
lessthn = {k:(v,"Good") for (k,v) in d.items() if v < 11.1 }
我有这段代码可以检查某个值是否小于 than/equal 到(等)我的号码限制。它按需要工作并打印出与这些操作员检查相匹配的相应键和值。但我也希望它打印出它们各自属于匹配操作员检查的两个类别之一,作为一个字符串,只要它显示将它们放入哪个类别,任何东西都可以工作。我知道如何对列表执行此操作,并且使用 R 会更好,但不确定 python 中的字典如何实现此操作。
这是我的代码,用于重现我所做的事情--
创建字典:
d = {'Tony':5, 'Mary':7.8, 'Joe':8.9,'Lee':6.8, 'Luke':11.5, 'Sally':5.8,'Billy':15.2, 'Josè':11.1, 'Jesus':18.9,'Frank':10.5}
检查值:
lessthn = {k:v for (k,v) in d.items() if v < 10.9 }
morethneqlto = {k:v for (k,v) in d.items() if v >= 10.9 }
结果示例(我现在编造这个来展示结果是什么样的 - 这与我创建的字典值不匹配):
{'Tony': 6,
'Sally': 5.8,
'Mary': 7.9,
'Billy': 9.8,
'John': 2.8,
'Joe': 9.5}
{'Luke': 16,
'Amy': 15.8,
'Gillan': 17.9,
'Sandra': 19.8,
'Jesus': 12.8,
'Josè': 19.5}
将其放在每个匹配值旁边的期望结果,类似这样的东西或任何可能的东西:
{'Tony': 6 : Good,
'Sally': 5.8 : Good,
'Mary': 7.9 : Good,
'Billy': 9.8 : Good,
'John': 2.8 : Good,
'Joe': 9.5 : Good}
{'Luke': 6 : Bad,
'Amy': 5.8 : Bad,
'Gillan': 7.9 : Bad,
'Sandra': 9.8 : Bad,
'Jesus': 2.8 : Bad,
'Josè': 9.5 : Bad}
我想知道答案可能是什么,但没有运气,我尝试了这样的事情:
morethaneqlto.append('Bad')
但是 append 不适用于 dict
和类似的东西,但我知道这是不对的,并且认为可能有更简单的解决方案:
if < 11.1 d.values:
print ("Good")
任何能使我的输出与所需输出一致的解决方案都很棒
您可以使用 pandas
创建一个 DataFrame
,根据相应的值
>>> import pandas as pd
>>> import numpy as np
>>> d = {'Tony':5, 'Mary':7.8, 'Joe':8.9,'Lee':6.8, 'Luke':11.5, 'Patient6':5.8,'Patient7':15.2, 'Josè':11.1, 'Jesus':18.9,'Frank':10.5}
>>> df = pd.DataFrame({'Names': d.keys(), 'Value': d.values()})
>>> df['Label'] = np.where(df['Value'] > 10, 'Good', 'Bad')
>>> df
Names Value Label
0 Tony 5.0 Bad
1 Mary 7.8 Bad
2 Joe 8.9 Bad
3 Lee 6.8 Bad
4 Luke 11.5 Good
5 Patient6 5.8 Bad
6 Patient7 15.2 Good
7 Josè 11.1 Good
8 Jesus 18.9 Good
9 Frank 10.5 Good
字典中的值必须是单个对象。如果您同时需要数字和指示符,则必须将它们放在一个对象中。例如,
lessthn = {k:(v,"Good") for (k,v) in d.items() if v < 11.1 }