h={'PC3': [
'03:03:03:03:03:03', '192.168.0.3', '200', {
'192.168.0.1': ('01:01:01:01:01:01', 1390618305.477),
'192.168.0.4': ('04:04:04:04:04:04', 1390618305.481),
'192.168.0.5': ('05:05:05:05:05:05', 1390618305.480)
}
],
'PC1': [
'01:01:01:01:01:05', '192.168.0.1', '200', {}
]
}
我的要求是用户输入输入,例如PC3或PC1(可能有许多PC只是为了提供想法)。例如,我输入PC3
现在我需要查看与该PC关联的嵌套字典(例如,在这种情况下为PC3)。对于其字典中的每个键,我需要检查元组的第二个值是否小于1390618305.478,如果为真我将删除该条目(键),例如它应该删除'192.168.0.1'并且不打印任何内容。
否则 我想打印元组的第一个值和关联的密钥。 04:04:04:04:04:04和192.168.0.4采用以下格式 04:04:04:04:04:04 192.168.0.4
对于特定PC的嵌套字典中的每个条目,我都会这样做,如果条件为假,我会打印出来。否则,如果条件为真,我会删除它。我打印的每个条目都应该在新的line.e.g
上04:04:04:04:04:04 192.168.0.4
05:05:05:05:05:05 192.168.0.5
,在这种情况下,192.168.0.1将被删除。
答案 0 :(得分:0)
for ip, (mac, t) in h['PC3'][3].items():
if not t < 1390618305.478: print mac, ip
这会产生:
04:04:04:04:04:04 192.168.0.4
05:05:05:05:05:05 192.168.0.5
还要删除其他键:
from copy import deepcopy
h={ 'PC3': ['03:03:03:03:03:03', '192.168.0.3', '200', {'192.168.0.1': ('01:01:01:01:01:01', 1390618305.477), '192.168.0.4': ('04:04:04:04:04:04', 1390618305.481), '192.168.0.5': ('05:05:05:05:05:05', 1390618305.480)}], 'PC1': ['01:01:01:01:01:05', '192.168.0.1', '200', {}]}
hcopy = deepcopy(h)
for ip, (mac, t) in h['PC3'][3].items():
if t < 1390618305.478:
del hcopy['PC3'][3][ip]
else:
print mac, ip
h = hcopy
以上内容从h的副本中删除了不需要的项目。这样做是因为从我们所在的东西中删除项目,同时迭代可能会导致一些非常奇怪的错误。
答案 1 :(得分:0)
试试这个
for item in h['PC3']:
if isinstance(item, dict):
for key in item.keys():
if item[key][1] < 1390618305.478:
item.pop(key, None)
else:
print item[key][0], key
上面的代码给出了以下结果:
04:04:04:04:04:04 192.168.0.4
05:05:05:05:05:05 192.168.0.5