字典:TypeError:'bool'/'nonetype object'在字典中循环时不可迭代

时间:2018-01-23 18:26:48

标签: python dictionary

对于以下字典,

a1 = {'a2':{'name':'mic\xa0\xa0', 'age':'12\xa0\xa0', 'college':True, 'contact':''},
        'a3':{'name':'sen\xa0\xa0', 'age':'23\xa0\xa0','college':True,'contact':''}}

当循环字典并执行某些操作使bool对象无法迭代时,如果从字典中删除布尔字段(college),那么空字段(nonetype({ {1}})对象不可迭代)

contact

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

只需进行一些小的更改即可使用isinstance()检查v2是否为字符串。如果是字符串,则迭代并执行操作。否则,保持不变。

示例:

def t1():
    a4 = {
        k : {
            k2: ''.join([i if 32 < ord(i) < 126 else " " for i in v2]) 
            if isinstance(v2, str) else v2 for k2, v2 in v.items()  
        } 
        for k, v in a1.items()
    }
    return a4

a5 = t1()

print(a5) 

输出:

{
  "a3": {
    "age": "23  ", 
    "contact": "", 
    "college": True, 
    "name": "sen  "
  }, 
  "a2": {
    "age": "12  ", 
    "contact": "", 
    "college": True, 
    "name": "mic  "
  }
}

您可能还想在.strip()的结果中加join()以删除前导/尾随空格。