有没有办法defaultdict(defaultdict(int))让以下代码工作?
for x in stuff:
d[x.a][x.b] += x.c_int
Run Code Online (Sandbox Code Playgroud)
d需要根据x.a和x.b元素进行临时构建.
我可以用:
for x in stuff:
d[x.a,x.b] += x.c_int
Run Code Online (Sandbox Code Playgroud)
但后来我无法使用:
d.keys()
d[x.a].keys()
Run Code Online (Sandbox Code Playgroud) 我有一个嵌套字典.是否只有一种方法可以安全地获得价值?
try:
example_dict['key1']['key2']
except KeyError:
pass
Run Code Online (Sandbox Code Playgroud)
或者python有一个像get()嵌套字典的方法?
我需要合并多个词典,这是我的例子:
dict1 = {1:{"a":{A}}, 2:{"b":{B}}}
dict2 = {2:{"c":{C}}, 3:{"d":{D}}
Run Code Online (Sandbox Code Playgroud)
随着A B C与D树的叶,像{"info1":"value", "info2":"value2"}
字典有一个未知的级别(深度),它可能是 {2:{"c":{"z":{"y":{C}}}}}
在我的例子中,它代表一个目录/文件结构,其中节点是docs并且是文件.
我想合并它们以获得:
dict3 = {1:{"a":{A}}, 2:{"b":{B},"c":{C}}, 3:{"d":{D}}}
Run Code Online (Sandbox Code Playgroud)
我不确定如何使用Python轻松完成这项工作.
在Perl很多次,我会做这样的事情:
$myhash{foo}{bar}{baz} = 1
Run Code Online (Sandbox Code Playgroud)
我怎么把它翻译成Python?到目前为止,我有:
if not 'foo' in myhash:
myhash['foo'] = {}
if not 'bar' in myhash['foo']:
myhash['foo']['bar'] = {}
myhash['foo']['bar']['baz'] = 1
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我有一个很大的列表,如:
[A][B1][C1]=1
[A][B1][C2]=2
[A][B2]=3
[D][E][F][G]=4
Run Code Online (Sandbox Code Playgroud)
我想建立一个多级别的词典,如:
A
--B1
-----C1=1
-----C2=1
--B2=3
D
--E
----F
------G=4
Run Code Online (Sandbox Code Playgroud)
我知道,如果我用递归defaultdict我可以写table[A][B1][C1]=1,table[A][B2]=2但如果我硬编码的INSERT语句这只适用.
在解析列表时,我不需要预先调用多少[] table[key1][key2][...].
我目前正在使用下面的方法在python中定义一个多维字典.我的问题是:这是定义多维决策的首选方式吗?
from collections import defaultdict
def site_struct():
return defaultdict(board_struct)
def board_struct():
return defaultdict(user_struct)
def user_struct():
return dict(pageviews=0,username='',comments=0)
userdict = defaultdict(site_struct)
Run Code Online (Sandbox Code Playgroud)
获得以下结构:
userdict['site1']['board1']['username'] = 'tommy'
Run Code Online (Sandbox Code Playgroud)
我也使用它来为用户动态增加计数器,而不必检查密钥是否存在或已经设置为0.例如:
userdict['site1']['board1']['username']['pageviews'] += 1
Run Code Online (Sandbox Code Playgroud) Python不允许将字典用作其他字典中的键.是否有使用非嵌套字典作为键的解决方法?
更复杂的不可清除对象和我的特定用例的一般问题已经移到这里.我对用例的原始描述不正确.
我有一个我这样创建的字典:
myDict = {}
Run Code Online (Sandbox Code Playgroud)
然后我想在其中添加与另一个字典对应的键,其中我放了另一个值:
myDict[2000]['hello'] = 50
Run Code Online (Sandbox Code Playgroud)
所以,当我经过myDict[2000]['hello']某个地方时,它会给予50.
为什么Python不只是在那里创建这些条目?有什么问题?我认为只有当你尝试读取一个不存在的条目时才会出现KeyError,但我正在这里创建它?
所以,我想将字典存储在持久文件中.有没有办法使用常规字典方法来添加,打印或删除该文件中字典中的条目?
似乎我可以使用cPickle存储字典并加载它,但我不知道从哪里拿它.
谷歌和在线文档都没有提供我的查询的很多见解,所以我想我会在这里问社区.
在Perl中,您可以轻松设置哈希哈希哈希值并测试最终密钥,如下所示:
my $hash = {};
$hash{"element1"}{"sub1"}{"subsub1"} = "value1";
if (exists($hash{"element1"}{"sub1"}{"subsub1"})) {
print "found value\n";
}
Run Code Online (Sandbox Code Playgroud)
什么是Python中的"最佳实践"等价物?
python ×10
dictionary ×8
array-merge ×1
collections ×1
except ×1
keyerror ×1
merge ×1
methods ×1
persistence ×1