创建具有多个值的字典

2024-05-16 01:00:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含mac_addressRSSI值和time值的文件;我想创建一个字典,其中键是mac_地址,值是RSSI时间

我该怎么做

该文件的格式如下:

6E:C6:F8:89:AE:64   -71dBm  10:18:25
C4:A5:DF:24:05:7E   -45dBm  10:18:26
B0:6E:BF:1F:5E:A1   -27dBm  10:18:48

但我有时会有3排以上的


Tags: 文件df字典timeaddressmac地址格式
3条回答
with open("file.txt","w") as f:
    f.write("""6E:C6:F8:89:AE:64  -71dBm   10:18:25
C4:A5:DF:24:05:7E  -45dBm   10:18:26
B0:6E:BF:1F:5E:A1  -27dBm   10:18:48""")

dic = {}
data = []
with open("file.txt","r") as f:

    data = f.read().split("\n")
for i in range(len(data)) :
    string = data[i].split(" ")
    for i in range(string.count("")):
        string.remove("")
        dic[string[0]] = " ".join(string[1:])
    print(dic)

如果@mozway的答案对你来说太复杂了一点,也许我的答案对你来说会更简单一点

解决方案1:列表/元组

您可以使用MAC地址作为键,对于值,可以使用包含RSSI和时间的列表/元组:

mydict = {
    '6E:C6:F8:89:AE:64': [-71, '10:18:25'],
    'C4:A5:DF:24:05:7E': [-45, '10:18:26'],
    'B0:6E:BF:1F:5E:A1': [-27, '10:18:48'],
}

# example: accessing the rssi of '6E:C6:F8:89:AE:64'
print(mydict['6E:C6:F8:89:AE:64'][0])  # -71

解决方案2:字典

或将字典作为外部字典值的嵌套字典结构:

mydict = {
    '6E:C6:F8:89:AE:64': {'rssi': -71, 'time': '10:18:25'},
    'C4:A5:DF:24:05:7E': {'rssi': -45, 'time': '10:18:26'},
    'B0:6E:BF:1F:5E:A1': {'rssi': -27, 'time': '10:18:48'},
}

# example: accessing the rssi of '6E:C6:F8:89:AE:64'
print(mydict['6E:C6:F8:89:AE:64']['rssi'])  # -71

使用类型提示和NamedTuple

from typing import NamedTuple,Dict

class RSSI(NamedTuple):
  rssi: str
  time:str

mac = str

data: Dict[mac,RSSI] = dict()  
with open('test.txt') as f:
  for line in f:
    mac,rssi,time = line.split()
    data[mac] = RSSI(rssi,time)
print(data)

输出

{'6E:C6:F8:89:AE:64': RSSI(rssi='-71dBm', time='10:18:25'), 'C4:A5:DF:24:05:7E': RSSI(rssi='-45dBm', time='10:18:26'), 'B0:6E:BF:1F:5E:A1': RSSI(rssi='-27dBm', time='10:18:48')}

相关问题 更多 >