遍历字典并检查

时间:2020-06-27 23:31:50

标签: python json

问题

如何检查字典中的所有行,同时检查之前或之后的1行?

遍历项目时,由于参考[key +/- 1],因此我在当前方法中会出错。我通常会找到黑客解决方案,但想知道您是否有更好的技术。

最后,字典是无序的,所以我不确定这是否合适。

尝试

sample_dict = {0: None,
               1: 'red',
               2: 42,
               3: None,
               4: None,
               5: 'lava',
               6: None,
               7: None,
               8: 'cats',
               9: 'pony',
               10: None}


desired_dict = {}
for key, value in sample_dict.items():
    if value is not None and sample_dict[key + 1] is not None:
        print(key, value)
        desired_dict[key] = value

2 个答案:

答案 0 :(得分:1)

如果您的最后一个密钥不是“ None”(无),则也应该对其进行测试。

for key, value in sample_dict.items():
    next_key = key + 1
    if (next_key <= len(sample_dict)):
        if value is not None and sample_dict[next_key] is not None:  # Error
            print(key, value)
            desired_dict[key] = value

答案 1 :(得分:1)

字典维护的唯一顺序是将键添加到字典的顺序,因此字典上唯一的“之后”含义是在这之后添加的“键”。

由于顺序很重要,并且所有键都是整数,所以ou应该使用列表-并且有一个definitie并清除“ after”,即使插入值也很有意义。

这就是我要做的:

sample_data= [None, 'red', 42,None,None,
           'lava', None, None, 'cats',
           'pony', None]


desired = {}
for index, value in enumerate(sample_data):
    if index < len(sample_data) and \
           value is not None and \
           sample_data[index + 1] is not None: 
         print(key, value)
         desired_dict[index] = value