标签: defaultdict

ImportError:无法导入名称defaultdict

ImportError跑步时我真的很奇怪from collections import defaultdict:

ImportError: cannot import name defaultdict
Run Code Online (Sandbox Code Playgroud)

我正在运行python 2.7,奇怪的是,在我的应用程序的其他部分,这个完全相同的导入行成功.

我想也许这是一个循环导入,但是当涉及内置python模块时它没有多大意义.

有什么想法我得到这个错误?

python defaultdict

5
推荐指数
1
解决办法
4364
查看次数

具有混合数据类型的 Python 嵌套 defaultdict

那么,我如何为此创建一个 defaultdict:

{
    'branch': {
        'count': 23,
        'leaf': {
            'tag1': 30,
            'tag2': 10
        }
    },
}
Run Code Online (Sandbox Code Playgroud)

这样,我会为count,tag1tag2作为默认值得到零?我想在阅读输入时动态填充字典。当我看到一个新的时,branch我想创建一个count零字典和一个空字典作为叶子。当我得到 a 时leaf,我想用它的名字创建一个键并将值设置为零。

更新:接受 Martijn 的答案,因为它有更多的赞成票,但其他答案同样好。

python dictionary defaultdict

5
推荐指数
1
解决办法
1266
查看次数

defaultdict(lambda:None) 和 defaultdict(int) 的区别

lambda当与 一起使用时,TYPE 究竟做了什么defaultdict?我有这个例子,即使对于int, list&lambda作为参数也能正常工作:

d = defaultdict(int)
d['one'] = lambda x:x*x
d['one'](2)
4

d = defaultdict(list)
d['one'] = lambda x:x*x
d['one'](2)
4

d = defaultdict(lambda: None)
d['one'] = lambda x:x*x
d['one'](2)
4
Run Code Online (Sandbox Code Playgroud)

我每次都有相同的结果。那么用 lambda "default ( lambda: None)"初始化的主要原因是什么?看起来defaultdict字典并不关心传入的参数类型。

python lambda defaultdict

5
推荐指数
2
解决办法
8741
查看次数

Python-使用defaultdict制作自定义对象的字典

我创建了以下课程。包,网站和注释都是字符串,而distroDict是(字符串,列表)字典。

class TableEntry(object):

    def __init__(self, package, website, distroDict, comments):
        self.package = package
        self.website = website
        self.distroDict = distroDict
        self.comments = comments
Run Code Online (Sandbox Code Playgroud)

我想使用defaultdict(TableEntry)制作(字符串,TableEntry)自定义词典。

tableDict = defaultdict(TableEntry)
entry = TableEntry(package, website, distroDict, comments)
tableDict[package].append(entry)
Run Code Online (Sandbox Code Playgroud)

我希望包是键,输入对象是值。我可以在入口对象中使用值,但如果尝试将其附加到tableDict,则会收到以下错误。

Traceback (most recent call last):
  File "wiki.py", line 151, in <module>
    printMetaData(lines, f)
  File "wiki.py", line 73, in printMetaData
    tableDict[package].append(entry)
TypeError: __init__() takes exactly 5 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下方法:

tableDict[package].append(TableEntry(package, website, distroDict, comments))
Run Code Online (Sandbox Code Playgroud)

并基本上收到相同的错误:

Traceback (most recent call last):
  File "wiki.py", line 150, in <module>
    printMetaData(lines, f) …
Run Code Online (Sandbox Code Playgroud)

python dictionary defaultdict

5
推荐指数
1
解决办法
3807
查看次数

如何使用键合并`defaultdict`中的列表,但在该键中保持列表分开?

我想合并包含defaultdict来自两个不同数据/文件的类(键)和列表值的列表。我想使用唯一键合并列表,但将列表值分开。

输入:

defaultdict(<class 'list'>, {'1335': ['C', 'T', 'T', 'C', 'T', 'G'], '254': ['T', 'T', 'G', 'C', 'G', 'G']})

defaultdict(<class 'list'>, {'1335': ['A', 'C', 'A', 'A', 'C', 'A'], '254': ['A', 'G', 'A', 'T', 'A', 'A']})

输出:

defaultdict(<class 'list'>, {'1335': ['C', 'T', 'T', 'C', 'T', 'G'], ['A', 'C', 'A', 'A', 'C', 'A'] , '254': ['T', 'T', 'G', 'C', 'G', 'G'], ['A', 'G', 'A', 'T', 'A', 'A']})

谢谢,

python dictionary for-loop list defaultdict

5
推荐指数
1
解决办法
1108
查看次数

Python - 如何将字典作为值传递给defaultdict而不是作为引用

所以说我有一个字典,其默认值是另一个字典

attributes = { 'first_name': None, 'last_name': None, 'calls': 0 }
accounts = defaultdict(lambda: attributes)
Run Code Online (Sandbox Code Playgroud)

问题是我传递给defaultdict(属性)的默认字典作为引用传递.我如何将其作为值传递?因此,更改一个键中的值不会更改其他键中的值

例如 -

accounts[1]['calls'] = accounts[1]['calls'] + 1
accounts[2]['calls'] = accounts[2]['calls'] + 1
print accounts[1]['calls'] # prints 2
print accounts[2]['calls'] # prints 2
Run Code Online (Sandbox Code Playgroud)

我希望他们每个人都打印1,因为我只增加了他们各自的"调用"值一次.

python hash dictionary pass-by-reference defaultdict

5
推荐指数
1
解决办法
892
查看次数

nltk.word_tokenize()给出AttributeError:'module'对象没有属性'defaultdict'

我是nltk的新手.我正在尝试一些基础知识.

import nltk
nltk.word_tokenize("Tokenize me")
Run Code Online (Sandbox Code Playgroud)

给我以下错误

Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
nltk.word_tokenize("hi im no onee")
File "C:\Python27\lib\site-packages\nltk\tokenize\__init__.py", line 101, in word_tokenize
return [token for sent in sent_tokenize(text, language)
File "C:\Python27\lib\site-packages\nltk\tokenize\__init__.py", line 85, in sent_tokenize
tokenizer = load('tokenizers/punkt/{0}.pickle'.format(language))
File "C:\Python27\lib\site-packages\nltk\data.py", line 786, in load
resource_val = pickle.load(opened_resource)
AttributeError: 'module' object has no attribute 'defaultdict'
Run Code Online (Sandbox Code Playgroud)

请有人帮忙.请告诉我如何解决此错误.

nltk attributeerror defaultdict

4
推荐指数
3
解决办法
1万
查看次数

如何将 defaultdict(Set) 转换为 defaultdict(list)?

我有一个defaultdict(Set)

from sets import Set
from collections import defaultdict
values = defaultdict(Set)
Run Code Online (Sandbox Code Playgroud)

我希望在构建时使用“设置”功能来删除重复项。下一步我想将其存储为 json。由于 json 不支持此数据结构,我想将数据结构转换为 adefaultdict(list)但当我尝试时:

defaultdict(list)(values)
Run Code Online (Sandbox Code Playgroud)

我得到:TypeError: 'collections.defaultdict' object is not callable,我应该如何进行转换?

python defaultdict

4
推荐指数
1
解决办法
8344
查看次数

同一类的 Python `collections.defaultdict`

我尝试使用 Trie 数据结构来解决一些编码问题。对于 trie 中的每个节点,您通常会放置其子节点的引用列表。因此,如果查找中不存在某些子节点,我考虑使用 defaultdict 创建默认的空 trie 节点。但是,我不知道如何使用 defaultdict 来引用包含它的类。

我尝试了两种方法,都失败了。以下是我尝试过的。

from dataclasses import dataclass
from collections import defaultdict

@dataclass   
class TrieNode():
    is_word = False
    children = defaultdict("TrieNode")

Run Code Online (Sandbox Code Playgroud)

上面的代码产生

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "<stdin>", line 4, in TrieNode
TypeError: first argument must be callable or None
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "<stdin>", line 4, in TrieNode
TypeError: first argument must be callable or None …
Run Code Online (Sandbox Code Playgroud)

python trie defaultdict

4
推荐指数
1
解决办法
2109
查看次数

比较两个 collections.defaultdict 并删除相似的值

我有两个collections.defaultdict并试图从中删除d1也在d2.

from collections import Counter, defaultdict
d1 = Counter({'hi': 22, 'bye': 55, 'ok': 33})
d2 = Counter({'hi': 10, 'hello': 233, 'nvm': 96})
Run Code Online (Sandbox Code Playgroud)

理想结果:

d3 = set()
d3 = ({'bye':55, 'ok':33})
Run Code Online (Sandbox Code Playgroud)

到目前为止我已经尝试过:

d3 = set()
d3 = d1 - d2
print(d3)
Counter({'bye': 55, 'ok': 33, 'hi': 12}) 
Run Code Online (Sandbox Code Playgroud)

但这保持了相同的值,'hi'即使我想删除所有相似的值。

python collections counter defaultdict

4
推荐指数
1
解决办法
291
查看次数