如何在字典中减去两个值

2024-04-26 12:25:28 发布

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

我需要在一个包含多个id的字典中减去两个值(start和end)。我需要一个循环,可以为每个值执行此操作,并将值保存在一个新字典中。你知道吗

m = re.findall(r'([0-9]*\.[0-9]*) IP [(]tos 0x0, ttl ([0-9]*), id ([0-9]*)', x)   
for num2, ttl, id in m:
dicts[id] = {'start': float(num2),'ttl': ttl,'id': id,'ip': '','end': 0}

m2 = re.findall(r'(\n[0-9]+\.[0-9]*) IP.*proto ICMP.*\n.*(\b[0-9]{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b) >.*\n.*id ([0-9]+)', x)
for num1, ip2, id in m2:
 num1s = {'end': float(num1)}
 dicts[id].update(num1s)
 dicts[id].update({'ip': ip2})

for start, end in dicts[id]:
  total = end - start

dicts的一个示例输出是 {'30639':{'start':1296184417.509661,'end':1296184417.51007,'ttl':'3','ip':'128.192.254.49','id':'30639}


Tags: inipreidfor字典floatstart
1条回答
网友
1楼 · 发布于 2024-04-26 12:25:28

您可能试图同时比较多个键。在Python中的嵌套dict结构中,您需要迭代每个父键(在您的例子中是id),然后比较子键/值(安全地)。你知道吗

以下是您应该做的:

for id in dicts:
   totals = dicts[id].get('end', 0) - dicts[id].get('start', 0)
   # do whatever with totals

例如:dicts[id].get('end', 0)安全地查找“end”键对应的值,如果找不到,则返回0。你知道吗

相关问题 更多 >