ImportError跑步时我真的很奇怪from collections import defaultdict:
ImportError: cannot import name defaultdict
Run Code Online (Sandbox Code Playgroud)
我正在运行python 2.7,奇怪的是,在我的应用程序的其他部分,这个完全相同的导入行成功.
我想也许这是一个循环导入,但是当涉及内置python模块时它没有多大意义.
有什么想法我得到这个错误?
那么,我如何为此创建一个 defaultdict:
{
'branch': {
'count': 23,
'leaf': {
'tag1': 30,
'tag2': 10
}
},
}
Run Code Online (Sandbox Code Playgroud)
这样,我会为count,tag1和tag2作为默认值得到零?我想在阅读输入时动态填充字典。当我看到一个新的时,branch我想创建一个count零字典和一个空字典作为叶子。当我得到 a 时leaf,我想用它的名字创建一个键并将值设置为零。
更新:接受 Martijn 的答案,因为它有更多的赞成票,但其他答案同样好。
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字典并不关心传入的参数类型。
我创建了以下课程。包,网站和注释都是字符串,而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) 我想合并包含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']})
谢谢,
所以说我有一个字典,其默认值是另一个字典
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,因为我只增加了他们各自的"调用"值一次.
我是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)
请有人帮忙.请告诉我如何解决此错误.
我有一个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,我应该如何进行转换?
我尝试使用 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) 我有两个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'即使我想删除所有相似的值。
defaultdict ×10
python ×9
dictionary ×4
collections ×1
counter ×1
for-loop ×1
hash ×1
lambda ×1
list ×1
nltk ×1
trie ×1