我有一个看起来像这样的defaultdict:
dict1 = defaultdict(lambda: defaultdict(int))
Run Code Online (Sandbox Code Playgroud)
问题是,我不能用cPickle来腌制它.我在这里找到的解决方案之一是使用模块级函数而不是lambda.我的问题是,什么是模块级功能?如何在cPickle中使用字典?
我的问题可能有点难以理解,但实际上就是这样。我有一个看起来像这样的嵌套字典:
dict_a = {'one': {'bird':2, 'tree':6, 'sky':1, 'TOTAL':9},
'two': {'apple':3, 'sky':1, 'TOTAL':4},
'three': {'tree':6, 'TOTAL':6},
'four': {'nada':1, 'TOTAL':1},
'five': {'orange':2, 'bird':3, 'TOTAL':5}
}
Run Code Online (Sandbox Code Playgroud)
和一个列表:
list1 = ['bird','tree']
newlist = []
Run Code Online (Sandbox Code Playgroud)
如何检查 list1 中的项目是否在 dict_a 的嵌套字典中并将其附加到 newlist 中?输出应如下所示:
newlist = ['one','three','five']
Run Code Online (Sandbox Code Playgroud)
因为鸟和树碰巧在一、三和五的嵌套字典中。
我能想到的是:
for s,v in dict_a.items():
for s1,v1 in v.items():
for item in list1:
if item == s1:
newlist.append(s)
Run Code Online (Sandbox Code Playgroud) 我有这样的输入:
country = 'CANADA'
Run Code Online (Sandbox Code Playgroud)
我希望输出如下:
C*A*N*A*D*A
Run Code Online (Sandbox Code Playgroud)
我试着这样做:
for letter in country:
tag = letter+'*'
sys.stdout.write(tag)
Run Code Online (Sandbox Code Playgroud)
但我会得到C*A*N*A*D*A*而不是C*A*N*A*D*A.那么如何切片sys.stdout.write或者我必须做其他格式?