簡體   English   中英

如何在Python字典中進行邏輯運算?

[英]How to do logical operation in Python dictionary?

我有以下字典。

dct = {'hello':1.9,'ciao':1.5,'yes':-2,'no':-3}

我想用 1 替換正值,用 -1 替換負值。

我嘗試了很多代碼,其中之一如下:

 np.where(dct.values() > 0, 1, 0)
 np.where(dct.values() > 0, -1, 0)
            

然而,它並沒有讓它發揮作用。 我該怎么做?

謝謝!

您可以通過 dict 理解來實現這一點(如果您希望發生這種情況,不確定您想如何處理完全等於零)

>>> d = {'hello': 1.9,'ciao': 1.5,'yes': -2,'no': -3}
>>> {k: 1 if v > 0 else -1 for k, v in d.items()}
{'hello': 1, 'ciao': 1, 'yes': -1, 'no': -1}

條件表達式

1 if v >= 0 else -1

可能是最容易理解的,但有一些更短的選擇:-)

(v >= 0) - (v < 0)

2 * (v >= 0) - 1

(1, -1)[v < 0]

from math import copysign as cs
cs(1, v)  # if you are ok with floats

只是列舉幾個。 當然,所有這些都可以插入到 dict 理解中:

dct = {k: cs(1, v) for k, v in dct.items()}

這也可以使用math.copysign完成,盡管對於小型應用程序來說可能有點過分,否則我會使用其他人發布的內容。

>>> from math import copysign
>>> {k: int(copysign(1, v)) for k, v in dct.items()}
{'hello': 1, 'ciao': 1, 'yes': -1, 'no': -1}

這是你的答案:

{k: 1 if v > 0 else -1 for k, v in dict.items()}

順便說一下,不要使用 dict 作為變量名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM