- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在阅读有关集合 defaultdict 的内容时遇到了以下代码行:
import collections
tree = lambda: collections.defaultdict(tree)
some_dict = tree()
some_dict['colours']['favourite'] = "yellow"
我知道 lamba 接受一个变量并对其执行一些功能。我见过 lambda 被这样使用: λ x: x + 3上面第二行代码,lambda取的是什么变量,执行什么功能?
我也明白defaultdict可以带参数,比如int或者list。在第二行中,defaultdict 采用参数 tree,它是一个变量。这有什么意义?
最佳答案
代码大致等同于(忽略 def
语句引入的元数据)
import collections
def tree():
return collections.defaultdict(tree)
some_dict = tree()
some_dict['colours']['favourite'] = "yellow"
lambda
表达式简单地定义了一个零参数函数,并且该函数绑定(bind)到名称tree
。
通常,只有在您真正需要匿名函数时才使用 lambda
表达式,例如将其作为参数传递给另一个函数,如
sorted_list = sorted(some_list_of_tuples, key=lambda x: x[0])
当您确实需要命名函数时,使用 def
语句被认为是更好的做法。
defaultdict
接受一个可调用对象来为新键生成默认值。 int()
返回 0,list()
返回一个空列表,tree()
返回一个新的 defaultdict
;它们都可以用作 defaultdict
的参数。定义 tree
返回一个 defaultdict
的递归性质,使用它自己作为默认值生成器意味着你可以生成任意深度的嵌套字典;每个“叶”字典本身就是另一个 defaultdict
。
关于python - 使用 lambda 和 defaultdict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51286423/
从文件中读取并清理的文本: ['the', 'cat', 'chased', 'the', 'dog', 'fled'] 挑战是返回一个字典,其中每个单词作为值,可以跟随它的单词作为键,并计算它跟随它
使用 this answer ,我创建了 defaultdict 的 defaultdict。现在,我想把那个嵌套很深的 dict 对象变回一个普通的 python dict。 from collec
我的应用程序说参数必须是可调用的或无类型有什么特别的原因吗?我很确定这就是您使用 defaultdict 作为其值实例化 defaultdict 的方式。 dict = defaultdict(def
我想实现一个类似 dict 的数据结构,它具有以下属性: from collections import UserDict class TestDict(UserDict): pass tes
我有两个 defaultdict : defaultdict(, {'a': ['OS', 'sys', 'procs'], 'b': ['OS', 'sys']}) defaultdict(, {'
我有一个defaultdict(Set): from sets import Set from collections import defaultdict values = defaultdict(
我正在使用 defaultdict 来存储数百万个短语,所以我的数据结构看起来像 mydict['string'] = set(['other', 'strings'])。它似乎适用于较小的集合,但当
所以 defaultdict documentation提到,如果缺少某个项目,则 default_factory 返回的值“将插入字典中作为键,然后返回。”这在大多数情况下都很棒,但在这种情况下我真
我有一个默认的列表列表,但我基本上想这样做: myDefaultDict = filter(lambda k: len(k)>1, myDefaultDict) 除了它似乎只适用于列表。我能做什么?
这可能是一个愚蠢的问题,但是:我的代码运行良好,直到我尝试添加 ml.我尝试了几种方式但是 init_dict = [] with open("example.csv", "r") as new_da
我正在尝试将列表递归地转换为嵌套字典,如下所示:- 给定输入:- parse_list = ['A','B','C','D'] 所需输出:- data = [ {'name': 'A',
我有一个名为“n”的字典,其中有一个键值关系(字典中的字典)。 此处的 key 将是tenant_id (b77865b66fd544e0841aa7dbca8bdc97, 7b73b9644e824
我有一个 Excel 数据集列表,其中包含以下某些信息: Category Subcategory Name Main Dish Noodle Tomato Noodl
我有以下内容: a = [{ "_id" : { "reportId" : "5a27cda63fff647c33a14b31" }, "amount" : 3000 }, { "_id"
这很简单: 'foo {bar}'.format(**{'bar': 0}) 这不起作用,产生一个 KeyError: from collections import defaultdict d =
我有这个: dict1 = defaultdict(lambda:defaultdict(list)) dict1['rl1']['sh1'] = ['a','b'] dict1['rl1']['sh
我正在尝试在 python 中使用 defalultdict 和不赋值的行为 数据如下: data = {'APPLaunch_ftrace': [63.3, 24.5, 8.4, 2.3, 0.9,
我有一个字典列表。我们称它为:list_of_dict。列表中的词典采用以下形式: {'a' : 1, 'b' : 5, 'c' : 3, 'd' : 6} 和 {'a' : 3, 'f' : 2,
我想使用关键字解包运算符 ** 格式化和打印字典中的数据。 格式字符串可能引用了很多关键字,而字典可能没有所有需要的关键字。对于缺少的键,我想使用字符串“N/A”作为默认值。 我想要一个聪明的解决方案
考虑以下默认字典: data = defaultdict(list) data['key1'] = [{'check': '', 'sth1_1':'k1', 'sth1_2':'k2'}] data
我是一名优秀的程序员,十分优秀!