- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们可以从键列表中初始化一个新的字典实例:
>>> dict.fromkeys(['spam', 'spam', 'potato'])
{'potato': None, 'spam': None}
querydict 是一个 dict,所以这应该可以,对吧?
>>> QueryDict.fromkeys(['spam', 'spam', 'potato'])
TypeError: __init__() takes at least 2 arguments (1 given)
当然我可以做一些像 QueryDict('spam&spam&potato')
这样蹩脚的事情,但我的问题是:.fromkeys
方法是完全可用还是完全损坏?
如果是前者,如何使用?如果是后者,为什么不在子类中明确禁用它?
最佳答案
问题还取决于 Django 版本。您使用的 Django 1.7.x 或更早版本需要 QueryDict 的位置参数 query_string
。它在 Django 1.8 中得到修复,此参数是可选的。
第二个问题是 QueryDict
默认创建一个 immutable 实例并且没有办法通过 传递
。无法将键添加到不可变,并且该方法在 Django 1.8 中也失败。mutable=True
>从 key
可以这样解决:
from django.http.request import QueryDict
class MyQueryDict(QueryDict):
@classmethod
def fromkeys(cls, seq, value='', encoding=None):
result = cls('', mutable=True, encoding=encoding)
for key in seq:
result.appendlist(key, value) # or result.update(key, value)
return result
为了反射(reflect)重复键,实现比较复杂。默认值为空字符串,因为通过 urlencode()
将其转换为字符串 'None' 没有意义,例如 'potato=None&spam=None&spam=None'
方法。默认结果 QueryDict 应与 QueryDict('potato&spam&spam')
相同。
提出的解决方案非常奇怪,raise NotImplemented()
将是一个更直接的“实现”。 (编辑:我不希望有更多有用的东西被 Django 代码库接受)但是我必须同意你的看法,这是一个带有神秘消息的错误。如果不需要警告说明,则未实现的功能通常是未记录的,因为它们可以找到无数。
其他解决方案是仅修改 __init__
:
class MyQueryDict(QueryDict):
def __init__(self, query_string=None, mutable=True, encoding=None):
super(MyQueryDict, self).__init__(query_string=query_string,
mutable=mutable,
encoding=encoding)
因为不可变的 QueryDict 实例通常是不切实际的,甚至 Django 中一半的内部使用都是可变的 QueryDict 实例。
关于python - 初始化 QueryDict.fromkeys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33640564/
我已将以下 xml 属性存储到 HashMap extraParams = new HashMap() 基本上我想在 kets sourceAttrStart 之间获取 hashmap 的
本文实例讲述了python使用dict.fromkeys()快速生成一个字典。分享给大家供大家参考,具体如下: ?
我需要将 test_input 中的数据与 classes 进行分组,即,如果 test_input 中的 2 个值相同,则它们应该具有相同的类. 我尝试创建一个字典,但不知道如何进行类管理: @py
我尝试创建满足我需要的完美字典(包含带有值和列表的字典的字典)。然而,我似乎一遍又一遍地分配相同的引用。 brands = ['val1', 'val2', 'val3'] infoBrands =
这个问题已经有答案了: dict.fromkeys all point to same list [duplicate] How do I create a unique value for each
我写了下面的函数。它在不应该的时候返回一个空字典。该代码在没有功能的命令行上运行。但是我看不出这个函数有什么问题,所以我不得不求助于你们的集体智慧。 def enter_users_into_dict
我们可以从键列表中初始化一个新的字典实例: >>> dict.fromkeys(['spam', 'spam', 'potato']) {'potato': None, 'spam': None} q
我有以下字典: ref_range = range(0,100) aas = list("ACDEFGHIKLMNPQRSTVWXY*") new_dict = {} new_dict = new_d
为什么 dict.fromkeys 的函数描述符功能不同于其他正常功能。 首先你无法访问__get__像这样:dict.fromkeys.__get__你必须从 __dict__ 得到它. ( dic
这是一个例子, my_keys=['hi','hello'] d=dict.fromkeys(my_keys,[]) print d d['hello'].append([1,]) print d['
我有一个继承自collections.Counter的Python类: class Analyzer(collections.Counter): pass 当我在这段代码上使用 pylint 时
代码如下: from collections import defaultdict result = defaultdict.fromkeys(['a','b','c'], list) result[
def parse_urls(weeks_urls): for wkey in weeks_urls.keys(): results=urllib2.urlopen(weeks
首先,我是 Python 的新手,所以如果我忽略了什么,我深表歉意,但我想使用 dict.fromkeys(或类似的东西)来创建列表字典,其中的键在另一个列表中提供。我正在执行一些计时测试,我希望键成
这个问题在这里已经有了答案: How can I initialize a dictionary of distinct empty lists in Python? (7 个回答) 关闭2年前。 我
这个问题在这里已经有了答案: How can I initialize a dictionary of distinct empty lists in Python? (7 个回答) 关闭 10 个月
dict 方法 {}.fromkeys() 接受一个可迭代的字符串,它将被转换为字典键。默认值将默认为 None。例如: d = {}.fromkeys(['loss', 'val_loss']) {
在 Python 中,您可以使用字典作为 dict.fromkeys() 的第一个参数,例如: In [1]: d = {'a': 1, 'b': 2} In [2]: dict.fromkeys(d
基于Python2.7字典的键必须是不可变的和可哈希的吗?在列表实现中,我发现 __hash__=None,这意味着它不可哈希。 我们可以使用 fromkeys 来创建这样的字典: d={}.from
这个问题在这里已经有了答案: How do I initialize a dictionary of empty lists in Python? (7 个答案) 关闭去年。 我怎样才能绕过这个限制
我是一名优秀的程序员,十分优秀!