如何从字典构造defaultdict?

时间:2011-09-24 12:47:56

标签: python dictionary

如果我d=dict(zip(range(1,10),range(50,61)))我如何在collections.defaultdict中构建dict

唯一的参数defaultdict似乎是工厂函数,我是否必须初始化然后浏览原始d并更新defaultdict

4 个答案:

答案 0 :(得分:68)

Read the docs

  

第一个参数提供default_factory的初始值   属性;它默认为None。 处理所有剩余的参数   就像它们被传递给dict构造函数一样,包括   关键字参数。

from collections import defaultdict
d=defaultdict(int, zip(range(1,10),range(50,61)))

或者给出字典d

from collections import defaultdict
d=dict(zip(range(1,10),range(50,61)))
my_default_dict = defaultdict(int,d)

答案 1 :(得分:3)

您可以通过将dict作为第二个参数传递来从dict构造一个defaultdict。

from collections import defaultdict

d1 = {'foo': 17}
d2 = defaultdict(int, d1)

print(d2['foo'])  ## should print 17
print(d2['bar'])  ## should print 1 (default int val )

答案 2 :(得分:0)

import {getSessionId} from 'Js/cookieReader.js'; describe('Cookie Parser should', function() { let _document = {cookie: ''}; beforeEach(function() { global.document = _document; }); it('return an empty string', function(done) { const result = getSessionId(); expect(result).toBe(''); done(); }); it('return null', function(done) { _document.cookie='ga=32213123'; const result = getSessionId(); expect(result).toBe(''); done(); }); it('return the session value', function(done) { _document.cookie = 'connect.sid=4332432423'; const result = getSessionId(); expect(result).not.toBe(null); expect(result).toMatch('4332432423'); done(); }); it('be able to handle multiple cookies', function(done) { _document.cookie='ga=32213123;connect.sid=4332432423'; const result = getSessionId(); expect(result).toBe('4332432423'); done(); }); it('be able to handle badly formatted cookies', function(done) { _document.cookie=' ga=32213123;connect.sid= 4332432423'; const result = getSessionId(); expect(result).toBe('4332432423'); done(); }); }); 是集合中的一种方法,当元素不存在时不会返回键错误。

答案 3 :(得分:0)

您可以使用可调用对象创建带有字典的 defaultdict。

from collections import defaultdict

def dict_():
    return {'foo': 1}

defaultdict_with_dict = defaultdict(dict_)