我正在从CSV导入并大致以以下格式获取数据
{ 'Field1' : 3000, 'Field2' : 6000, 'RandomField' : 5000 }
字段名称是动态的。(好吧,它们是动态的,可能存在比Field1和Field2更多的东西,但是我知道Field1
并且Field2
一直都会在那里。
我希望能够将此字典传递给我的班级,allMyFields
以便我可以将以上数据作为属性来访问。
class allMyFields:
# I think I need to include these to allow hinting in Komodo. I think.
self.Field1 = None
self.Field2 = None
def __init__(self,dictionary):
for k,v in dictionary.items():
self.k = v
#of course, this doesn't work. I've ended up doing this instead
#self.data[k] = v
#but it's not the way I want to access the data.
q = { 'Field1' : 3000, 'Field2' : 6000, 'RandomField' : 5000 }
instance = allMyFields(q)
# Ideally I could do this.
print q.Field1
有什么建议?至于为什么-我希望能够利用代码提示,并且将数据导入到data
我一直在做的名为字典的操作中并不能给我带来任何好处。
(因为直到运行时才解析变量名,所以我仍然不得不向Komodo扔骨头-我认为self.Field1 = None
应该足够了。)
所以-我该怎么做?还是我在设计错误的非Python树?
您可以使用setattr
(但是要小心:并非每个字符串都是有效的属性名称!):
>>> class AllMyFields:
... def __init__(self, dictionary):
... for k, v in dictionary.items():
... setattr(self, k, v)
...
>>> o = AllMyFields({'a': 1, 'b': 2})
>>> o.a
1
编辑:
让我解释一下上面的代码和SilentGhost的答案之间的区别。上面的代码片段创建了一个类,其 实例属性
基于给定的字典。SilentGhost的代码创建一个类,其 类属性 基于给定的字典。
根据您的具体情况,这些解决方案中的任何一个都可能更合适。您是否简单地创建一个或多个类实例?如果答案是一个,那么您也可以完全跳过对象的创建,而仅构造类型(并使用SilentGhost的答案)。
问题内容: 我有一个字符串形式: 依此类推(长度会有所不同)。由此创建字典的最简单方法是什么? 我知道我可以拆分,但是我无法获得正确的语法。如果我分开,那么我如何将这两个部分结合在一起? 对此进行迭代似乎很痛苦。 问题答案: 编辑:下一个解决方案是当您想要将值作为整数,我认为这是您想要的。
本文向大家介绍JavaScript中创建字典对象(dictionary)实例,包括了JavaScript中创建字典对象(dictionary)实例的使用技巧和注意事项,需要的朋友参考一下 对于JavaScript来说,其自身的Array对象仅仅是个数组,无法提供通过关键字来获取保存的数据,jQuery源码中提供了一种非常好的方式来解决这个问题,先看一下源码: 上述源码是创建一个编译结果的缓存,代码
问题 你想创建一个新的拥有一些额外功能的实例属性类型,比如类型检查。 解决方案 如果你想创建一个全新的实例属性,可以通过一个描述器类的形式来定义它的功能。下面是一个例子: # Descriptor attribute for an integer type-checked attribute class Integer: def __init__(self, name):
问题内容: 我希望能够通过在已实例化的对象上调用方法来创建对象的新实例。例如,我有一个对象: 我希望能够调用并拥有两个有机体类型的对象。此时我的方法如下所示: 并且我非常确定它不起作用(我甚至不确定如何测试它。我在本文中尝试了gc方法)。那么,如何使我的对象创建自己的副本,就像我创建的第一个对象(带有)一样,该副本是可访问的? 问题答案: 另一个选项-如果方法中未使用实例(): 这样可以确保生物产
问题内容: 我正在尝试从csv文件创建字典。csv文件的第一列包含唯一键,第二列包含值。csv文件的每一行代表字典中的唯一键,值对。我尝试使用类,但是我只能弄清楚如何为每一行生成一个新的字典。我要一部字典。这是我尝试使用的代码: 当我运行上面的代码时,我得到一个。如何从csv文件创建一个字典? 问题答案: 我相信你正在寻找的语法如下: 或者,对于,你需要:
问题内容: 我想从值中创建一个字典,我从excel单元中获取,我的代码如下, 我想创建一个字典,如下所示,其中包含来自excel单元格的值; 关于如何创建此字典的任何想法吗? 问题答案: