在不指定索引的情况下引用Python列表元素

时间:2012-09-02 03:50:21

标签: python indexing

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

例如

outcomeHornFive=5

someList = []
someList.append(outComeHornFive)

而不是这样做,

someList[0] # to reference horn five outcome

我该怎么办?原因是我需要在列表中引用很多项目,我认为跟踪哪个索引是非常不方便的。

someList.hornFive

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:3)

您可以使用字典而不是列表。

请参阅python文档中的data types

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

my_dict["HornFive"] = 20

答案 2 :(得分:0)

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

  

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

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

答案 3 :(得分: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 Way。或者你发现它更美观。在我的情况下,我需要使用相同的代码处理项目,这些项目是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