我有两个示例列表,我想要实现的是获得一个嵌套的默认字典和值的总和。
下面的代码运行得很好:
from collections import defaultdict
l1 = [1,2,3,4]
l2 = [5,6,7,8]
dd = defaultdict(int)
for i in l1:
for ii in l2:
dd[i] += ii
但是,我要做的是在d字典中创建一个默认键:
from collections import defaultdict
l1 = [1,2,3,4]
l2 = [5,6,7,8]
dd = defaultdict(int)
f
使用python 3.2。
import collections
d = defaultdict(int)
跑
NameError: name 'defaultdict' is not defined
我重新启动了Idle。我知道集合正在被导入,因为键入
collections
结果:
<module 'collections' from '/usr/lib/python3.2/collections.py'>
此外,help (集合)向我展示了帮助,包括defaultdict类。
我做错了什么?
我如何才能得到一个可调用的工厂,一个默认的允许填充它的理解?我认为这是不可能的,但我想不出一个很好的理由为什么?
>>> def foo(*args):
... # TODO
...
>>> from collections import defaultdict
>>> thing = foo(defaultdict, int)
>>> d = thing((i, i*i) for i in range(3))
>>> d[2]
# should return 4
>>> d[-
我必须填入如下类型的字典:
partial[sequence][exp_id] = [item_1, ..., item_n]
这可以通过以下方式完成:
partial = defaultdict(dict)
for sequence in sequences:
for exp_id in exp_ids:
for item in data:
partial[sequence].setdefault(eid, []).append(item)
有没有更有效的方法?类似于:
partial = defaultdict(defaultdict(list)
如果我想设置子字典中的变量,有没有办法动态创建缺少的键。
本质上,我想创建任何缺少的关键点并设置我的值。
self.portdict[switchname][str(neighbor['name'])]['local']['ports'] = []
目前我正在做这件事,但它很混乱:
if not switchname in self.portdict:
self.portdict[switchname] = {}
if not str(neighbor['name']) in self.portdict[switchnam
使用tree = lambda: dedfaultdict(tree),我可以替换以下代码:
from collections import defaultdict
END = '$'
words = ['hi', 'hello', 'hiya', 'hey']
root = {}
for word in words:
node = root
for ch in word:
node = node.setdefault(ch, {}) # <---- Code that can be re
为了让下面的代码工作,有没有办法拥有一个defaultdict(defaultdict(int))?
for x in stuff:
d[x.a][x.b] += x.c_int
根据x.a和x.b元素,需要临时构建d。
我可以使用:
for x in stuff:
d[x.a,x.b] += x.c_int
但这样我就不能使用:
d.keys()
d[x.a].keys()
我正在尝试获取所有的单词及其标签,并将其计入字典。然而,我一直收到一个KeyError,我不明白为什么。
sent = [[('Merger', 'NOUN'), ('proposed', 'VERB')], [('Wards', 'NOUN'), ('protected', 'VERB')]]
dicts = {}
for x in sent:
for y in x:
if y[0] in dicts.keys():
我有一行代码,用第一个字母将列表中的单词组织成字典:
for a in list: dictionary[a[0]].append(a)
问题是,这要求每个字典键各自都有空列表值。我可以在前面增加几行代码,但我想知道是否有办法让前面的代码行来处理这个问题。
这是伪代码:
如果存在密钥,则将其插入到dictionary[a[0]]中。
如果没有,则在创建带有空列表的键后执行该操作。
有什么方法可以在一行代码中做到这一点?