如何在不指定索引号的情况下将值存储在列表中?
例如
outcomeHornFive=5
someList = []
someList.append(outComeHornFive)
而不是这样做,
someList[0] # to reference horn five outcome
我怎么能做这样的事情?原因是我需要在列表中引用许多项目,我只是认为跟踪哪个索引是什么真的很不方便。
someList.hornFive
如果您想通过属性访问(或通过名称)引用事物,您可以使用其他数据结构。
你可以把它们放在一个 中dict
,或者创建一个类,或者做其他事情。这取决于您希望与该对象进行何种其他交互。
(PS,我们称这些列表,而不是数组)。
你不能也不应该。如果你能做到这一点,你会如何引用列表本身?您需要参考列表本身。
原因是我需要在列表中引用许多项目,我只是认为跟踪哪个索引是什么真的很不方便。
不管你如何组织你的数据,你都需要做一些类似的事情。如果您有单独的变量,则需要知道哪个变量存储了什么。如果您对此有所了解,您仍然需要知道baresomeList
是指“五号角”而不是“六号角”。列表和字典的一个优点是您可以分解出这些知识并编写通用代码。字典,甚至是自定义类(如果存在有限数量的语义不同的属性,并且您永远不必将其用作集合),可以通过给它一个实际名称而不是数字索引来帮助提高可读性.
引用自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