gpt4 book ai didi

c++ - Pythonic 方法来创建 vector vector 的空映射

转载 作者:行者123 更新时间:2023-11-30 00:59:34 25 4
gpt4 key购买 nike

我有以下C++代码

std::map<std::string, std::vector<std::vector<std::vector<double> > > > details
details["string"][index][index].push_back(123.5);

我可以知道什么是 Pythonic 来声明 vector vector 的空映射吗? :p

我试着拥有

self.details = {}
self.details["string"][index][index].add(value)

我得到了

KeyError: 'string'

最佳答案

可能最好的方法是对外部容器使用字典,其中键的字符串映射到内部字典,元组( vector 索引)映射到 double :

 d = {'abc': {(0,0,0): 1.2, (0,0,1): 1.3}}

它可能比实际嵌套列表效率低(至少时间效率低,我想它实际上更节省空间),但恕我直言,访问更干净:

>>> d['abc'][0,0,1]
1.3

编辑

边走边添加 key :

d = {} #start with empty dictionary
d['abc'] = {} #insert a new string key into outer dict
d['abc'][0,3,3] = 1.3 #insert new value into inner dict
d['abc'][5,3,3] = 2.4 #insert another value into inner dict
d['def'] = {} #insert another string key into outer dict
d['def'][1,1,1] = 4.4
#...
>>> d
{'abc': {(0, 3, 3): 1.3, (5, 3, 3): 2.4}, 'def': {(1, 1, 1): 4.4}}

或者如果使用 Python >= 2.5,一个更优雅的解决方案是使用 defaultdict : 它的工作方式与普通字典一样,但可以为不存在的键创建值。

import collections
d = collections.defaultdict(dict) #The first parameter is the constructor of values for keys that don't exist
d['abc'][0,3,3] = 1.3
d['abc'][5,3,3] = 2.4
d['def'][1,1,1] = 4.4
#...
>>> d
defaultdict(<type 'dict'>, {'abc': {(0, 3, 3): 1.3, (5, 3, 3): 2.4}, 'def': {(1, 1, 1): 4.4}})

关于c++ - Pythonic 方法来创建 vector vector 的空映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4151142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com