如果我d=dict(zip(range(1,10),range(50,61)))
我如何在collections.defaultdict
中构建dict
?
唯一的参数defaultdict
似乎是工厂函数,我是否必须初始化然后浏览原始d
并更新defaultdict
?
答案 0 :(得分:68)
第一个参数提供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_)