我创建了这个类:
class Device(object):
"""Holds searched SSID, searched BSSID and
own MAC-Addr information about a device"""
def __init__(self, mac):
self.mac = mac
self.bssid_set = set()
self.ssid_set = set()
def add_bssid(self, bssid):
self.bssid_set.add(bssid)
def add_ssid(self, ssid):
self.ssid_set.add(ssid)
def __str__(self):
ssid_str = ', '.join(self.ssid_set)
bssid_str = ', '.join(self.bssid_set)
return "{mac} has searched for {ssid_str} and {bssid_str}".format(
mac = self.mac,
ssid_str = ssid_str,
bssid_str = bssid_str)
并且我想创建此类的多个对象,将它们放在一个集合中(无重复项)并在我发现具有另一个 ssid 或 bssid 的新探测请求时更新对象,因此该集合的标识符应该是 mac .
要么我太盲目,看不到如何正确使用集合,要么我在这里尝试了错误的东西,因为更新集合只是添加了一个新对象,但我不需要这个。
像这样使用 dict 会更明智吗:
mac = 'abcd'
ssid = set(['ssid1', 'ssid2'])
bssid = set(['bssid1', 'bssid2'])
dict[mac] = [ssid.update('newssid'), bssid.update('newbssid')]
或者去这里的 pythonic 方式是什么?
编辑:不小心把 '' 放在 mac 周围
最佳答案
Defaultdict 可以做你类(class)正在做的事情
from collections import defaultdict
d = defaultdict(dict)
d['mac1']['bssid']=set()
d['mac1']['ssid']=set()
d
输出:
defaultdict(dict, {'mac1': {'bssid': set(), 'ssid': set()}})
关于Python:更新集合中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41740497/