Tzv*_*i L 1 python list set python-3.x
我正在学习 Python 数据结构课程,解决方案的建议包括这段我不理解的代码。
这是字典的示例:
vc_metro = {
'Richmond-Brighouse': set(['Lansdowne']),
'Lansdowne': set(['Richmond-Brighouse', 'Aberdeen'])
}
Run Code Online (Sandbox Code Playgroud)
建议删除值中的某些元素,我们使用以下代码:
vc_metro['Lansdowne'] -= set(['Richmond-Brighouse'])
Run Code Online (Sandbox Code Playgroud)
我从未见过这样的结构,并且在基本情况下使用它,例如:
my_list = [1, 2, 3, 4, 5, 6]
other_list = [1, 2]
my_list -= other_list
Run Code Online (Sandbox Code Playgroud)
不起作用。我在哪里可以了解有关此推荐策略的更多信息?
您无法减去列表,但可以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}
Run Code Online (Sandbox Code Playgroud)
带逗号但不带冒号的花括号被解释为集合对象。所以直接构造函数调用
set(['Richmond-Brighouse'])
Run Code Online (Sandbox Code Playgroud)
相当于
{'Richmond-Brighouse'}
Run Code Online (Sandbox Code Playgroud)
请注意,您不能这样做set('Richmond-Brighouse'):将字符串的所有单个字符添加到集合中,因为字符串是可迭代的。
-=使用/difference代替的原因remove是差异仅删除现有元素,并默默地忽略其他元素。该discard方法对单个元素执行此操作。差分允许一次删除多个元素。
原来的行vc_metro['Lansdowne'] -= set(['Richmond-Brighouse'])可以重写为
vc_metro['Lansdowne'].discard('Richmond-Brighouse')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4586 次 |
| 最近记录: |