1

如何在不指定索引号的情况下将值存储在列表中?

例如

outcomeHornFive=5

someList = []
someList.append(outComeHornFive)

而不是这样做,

someList[0] # to reference horn five outcome

我怎么能做这样的事情?原因是我需要在列表中引用许多项目,我只是认为跟踪哪个索引是什么真的很不方便。

someList.hornFive
4

4 回答 4

3

如果您想通过属性访问(或通过名称)引用事物,您可以使用其他数据结构。

你可以把它们放在一个 中dict,或者创建一个类,或者做其他事情。这取决于您希望与该对象进行何种其他交互。

(PS,我们称这些列表,而不是数组)。

于 2012-09-02T03:51:54.407 回答
3

您可以使用字典来代替使用列表。

请参阅python 文档中的数据类型

字典允许您使用键查找值:

my_dict["HornFive"] = 20
于 2012-09-02T03:56:12.980 回答
0

你不能也不应该。如果你能做到这一点,你会如何引用列表本身?您需要参考列表本身。

原因是我需要在列表中引用许多项目,我只是认为跟踪哪个索引是什么真的很不方便。

不管你如何组织你的数据,你都需要做一些类似的事情。如果您有单独的变量,则需要知道哪个变量存储了什么。如果您对此有所了解,您仍然需要知道baresomeList是指“五号角”而不是“六号角”。列表和字典的一个优点是您可以分解出这些知识并编写通用代码。字典,甚至是自定义类(如果存在有限数量的语义不同的属性,并且您永远不必将其用作集合),可以通过给它一个实际名称而不是数字索引来帮助提高可读性.

于 2012-09-02T03:57:44.980 回答
0

引用自http://parand.com/say/index.php/2008/10/13/access-python-dictionary-keys-as-properties/

如果您的字典通过点表示法而不是字典语法,假设您想访问这些值。也就是说,你有:

d = {'name':'Joe', 'mood':'grumpy'}

你想通过“名字”和“心情”

d.name d.mood

而不是通常的

d['name']
d['mood']

你为什么想做这个?也许你喜欢 Javascript 方式。或者你觉得它更美观。在我的情况下,我需要使用相同的代码来处理 Django 模型实例或普通字典的项目,因此我需要提供一种获取属性的统一方式。

事实证明这很简单:

class DictObj(object):
    def __init__(self, d):
        self.d = d

    def __getattr__(self, m):
        return self.d.get(m, None)

d = DictObj(d)
d.name
# prints Joe
d.mood
# prints grumpy
于 2012-09-02T04:36:31.087 回答