簡體   English   中英

python中集合減法的例子

[英]Example of set subtraction in python

我正在學習 Python 中的數據結構課程,解決方案的建議包括我不理解的這段代碼。

這是字典的示例:

vc_metro = {
    'Richmond-Brighouse': set(['Lansdowne']),
    'Lansdowne': set(['Richmond-Brighouse', 'Aberdeen'])
}

建議刪除值中的一些元素,我們使用以下代碼:

vc_metro['Lansdowne'] -= set(['Richmond-Brighouse'])

我從未見過這樣的結構,並在基本情況下使用它,例如:

my_list = [1, 2, 3, 4, 5, 6]
other_list = [1, 2]
my_list -= other_list

不起作用。 我在哪里可以了解有關此推薦策略的更多信息?

您不能減去列表,但可以有意義地減去set對象。 集合是哈希表,有點類似於dict.keys() ,它只允許一個對象的一個​​實例。

-=運算符等同於difference方法,只是它是就地的。 它從左側刪除兩個操作數中存在的所有元素。

您帶有集合的簡單示例如下所示:

>>> my_set = {1, 2, 3, 4, 5, 6}
>>> other_set = {1, 2}
>>> my_set -= other_set
>>> my_set
{3, 4, 5, 6}

帶逗號但沒有冒號的花括號被解釋為一個集合對象。 所以直接構造函數調用

set(['Richmond-Brighouse'])

相當於

{'Richmond-Brighouse'}

請注意,您不能執行set('Richmond-Brighouse') :這會將字符串的所有單個字符添加到集合中,因為字符串是可迭代的。

使用-= / difference而不是remove是差異僅刪除現有元素,而默默地忽略其他元素。 discard方法為單個元素執行此操作。 差分允許一次刪除多個元素。

原始行vc_metro['Lansdowne'] -= set(['Richmond-Brighouse'])可以重寫為

vc_metro['Lansdowne'].discard('Richmond-Brighouse')

暫無
暫無

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

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