python中的Bunch和Dictionary类型有什么区别?

时间:2019-05-24 05:13:23

标签: python

我发现束和字典的工作原理大致相同。就像有字典对象说 dict_1 = {"a":1, "b":2} 一堆物体说一堆 bunch_1 = Bunch(a=1, b=2) 两者具有相同的行为

2 个答案:

答案 0 :(得分:7)

Bunch是Dict类的子类,并且像dict一样支持所有方法。另外,它允许您将键用作属性。

b = Bunch(a=1, b=2)
>>> b['b']
2
>>> b.b
2

Read more here

答案 1 :(得分:0)

束类似于字典,但是它支持属性类型访问。

1)数据类型

  • 字典是内置类型,而Bunch来自bundleclass 包。束类。
  • Bunch在python 2中工作正常,但是在python 3中 这是行不通的!您从sklearn.utils导入Bunch

    来自bundleclass import Bunch#python2 从sklearn.utils导入Bunch

2)初始化 束的初始化不需要'{}',而是具有您需要在束中的元素属性的显式函数。

d1={'a':1,'b':'one','c':[1,2,3],4:'d'}
b1=Bunch(a=1,b='one',c=[1,2,3])

还要注意这里Bunch的键是类的属性。它们必须是可变的,并且必须遵循变量约定。

3)访问密钥的值 这是两者之间的主要区别。

d1['a']
b1['a']
b1.a

在Bunch中,您可以使用点符号来访问属性。在字典中这是不可能的。

相似之处 字典和束都可以包含任何数据类型的值。但是密钥必须是可变的。 可以有嵌套的字典和嵌套的束。

捆绑实用程序

  • Bunch()对json很有用。
  • Bunch()用于在sklearn中加载数据。通常,一堆包含各种类型的各种属性(列表,numpy数组等)。

更多信息 与其他任何对象一样,请使用dir(Bunch object)了解更多信息。 请参阅此链接以了解更多信息:Bunch

如果您的目标是将一堆转换为数据框,则可以引用此链接https://github.com/viswanathanc/basic_python/blob/master/sklearn.utils.bunch%20to%20pandas%20Dataframe.ipynb