我有以下代码:
TYPES = {'hotmail':{'type':'hotmail', 'lookup':'mixed', 'dkim': 'no', 'signatures':['|S|Return-Path: postmaster@hotmail.com','|R|^Return-Path:\s*[^@]+@(?:hot|msn)','^Received: from .*hotmail.com$']},
'gmail':{'type':'gmail', 'lookup':'mixed', 'dkim': 'yes', 'signatures':['|S|Subject: unsubscribe','','','']}
}
for type_key, type in TYPES.iteritems():
for sub_type_key, sub_type in type.iteritems():
for sig in sub_type['signatures']:
if ("|S|" in sig):
#String based matching
clean_sig = sig[3:len(sig)]
if (clean_sig in file_contents):
sig_match += 1
elif ("|R|" in sig):
clean_sig = sig[3:len(sig)]
#REGMATCH later
if (sig_match == sig.count):
return sub_type['type']
return None
Run Code Online (Sandbox Code Playgroud)
但是,它会生成错误:
for sig in sub_type['signatures']:
TypeError: string indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)
我假设它会看到列表从字典元素中拉出来,并允许我循环它? …
我有一个案例,我需要以编程方式构造以下结构(是的我知道.setdefault和defaultdict但我无法得到我想要的)
我基本上需要一个字典,在循环中创建一个字典字典.一开始,结构完全是空白的.
结构示例(请注意,我想在代码中创建一个具有此结构的数组!)
RULE = {
'hard_failure': {
4514 : {
'f_expr' = 'ABC',
'c_expr' = 'XF0',
}
}
}
Run Code Online (Sandbox Code Playgroud)
需要创建此代码的伪代码:
...
self.rules = {}
for row in rows:
a = 'hard_failure'
b = row[0] # 4514
c = row[1] # ABC
d = row[2] # XF0
# Universe collapse right after
self.rules = ????
...
Run Code Online (Sandbox Code Playgroud)
上面的代码显然不起作用,因为我不知道该怎么做!