如何在不指定索引号的情况下将值存储在列表中?
例如
outcomeHornFive=5
someList = []
someList.append(outComeHornFive)
而不是这样做,
someList[0] # to reference horn five outcome
我该怎么办?原因是我需要在列表中引用很多项目,我认为跟踪哪个索引是非常不方便的。
someList.hornFive
答案 0 :(得分:3)
如果您想通过属性访问(或通过名称)引用内容,则可以使用其他数据结构。
您可以将它们放在dict
中,或者创建一个类,或者执行其他操作。这取决于您希望与该对象进行何种其他交互。
(P.S。,我们称这些列表,而不是数组)。
答案 1 :(得分:3)
答案 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