小编Fyn*_*ney的帖子

不能pickle defaultdict

我有一个看起来像这样的defaultdict:

dict1 = defaultdict(lambda: defaultdict(int))
Run Code Online (Sandbox Code Playgroud)

问题是,我不能用cPickle来腌制它.我在这里找到的解决方案之一是使用模块级函数而不是lambda.我的问题是,什么是模块级功能?如何在cPickle中使用字典?

python pickle defaultdict

46
推荐指数
6
解决办法
1万
查看次数

检查列表中的项目是否存在于字典中

我的问题可能有点难以理解,但实际上就是这样。我有一个看起来像这样的嵌套字典:

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)

python dictionary list

5
推荐指数
1
解决办法
4835
查看次数

使用sys.stdout.write()时如何进行切片

我有这样的输入:

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或者我必须做其他格式?

python

0
推荐指数
1
解决办法
68
查看次数

标签 统计

python ×3

defaultdict ×1

dictionary ×1

list ×1

pickle ×1