1 集合特性介绍
在 python 中集合看起来像是只有 key 的字典 不能重复
{'disk','cpu','memory','motherboard'}
>>> s1 = {'we', 1,2, 3,'we'}
>>> s1
{3, 1, 2, 'we'}
在 python 解释器中表现为 set
集合内的元素不允许重复
2 高效创建集合和转换
set()
In [96]: s1 = set()
In [97]: s1
Out[97]: set()
转换
In [99]: set('disk')
Out[99]: {'d', 'i', 'k', 's'}
In [100]: set(['disk','cpu','memory'])
Out[100]: {'cpu', 'disk', 'memory'}
In [101]: set(('disk','cpu','memory'))
Out[101]: {'cpu', 'disk', 'memory'}
In [102]: set({'disk': '560G','cpu': '4'})
Out[102]: {'cpu', 'disk'}
>>> s1 = {'we':1,'fg':2, 'rt':3}
>>> set(s1)
{'fg', 'we', 'rt'} 只能转换字典中的键
3 集合运算
a. & 交集
获取两个集合都有的元素
In [55]: s1 = {"192.168.1.51", "192.168.1.45"}
In [56]: s2 = {"192.168.1.51", "192.168.1.78", }
In [57]: s1 & s2
Out[57]: {'192.168.1.51'}
b. |并集
把两个集合的元素合并在一起,产生一个新的集合
In [60]: s1 | s2
Out[60]: {'192.168.1.45', '192.168.1.51', '192.168.1.78'}
c. -差集
返回第一个集合中独有的元素。
就是只保留在第一个集合中出现并且不在第二个集合中出现的元素。
In [55]: s1 = {"192.168.1.51", "192.168.1.45"}
In [56]: s2 = {"192.168.1.55", "192.168.1.51"}
In [61]: s1 - s2
Out[61]: {'192.168.1.45'}
In [62]: s2 - s1
Out[62]: {'192.168.1.55'}
^异或运算
获取两个集合的分别独有的元素,组合为一个新的集合对象。
In [55]: s1 = {"192.168.1.51", "192.168.1.45"}
In [56]: s2 = {"192.168.1.55", "192.168.1.51"}
In [63]: s1 ^ s2
Out[63]: {'192.168.1.45', '192.168.1.78'}
大型数据结构应用场景
host_info = []
host_info.append(
{'192.168.1.11':
{'cpu':['Intel(R) Core(TM) i5-5350U CPU @ 1.80GHz',4,1],
'memory':['16','4','2'],
'disk':['1T','2T']}}
)
host_info.append({'192.168.1.12':
{'cpu':['Intel(R) Core(TM) i5-5350U CPU @ 1.80GHz',4,1],
'memory':['16','4','2'],
'disk':['1T','2T']}})
取到 “1T”
print(host_info[0])
print(host_info[0].get('192.168.1.11').get('disk')[0])