以名称引用列表元素

时间:2013-05-20 13:46:45

标签: python

我正在尝试扫描字典引用列表以获取每个字典中的键数。如何引用元素的名称而不是字典的内容? audit_dicts列表中的每个元素都是对现有字典的引用。

audit_dicts = [ osdata, weblogic, tomcat ]
for i in audit_dicts:
    print "Length of the %s dictionary is %d lines." % (i.name(), len(i))

我知道它与内容类型是字典有关,但是没有办法在列表中打印元素的名称?我基本上使用列表来存储所有这些字典,以便我可以在一个循环中对它们执行多个操作。另外,有没有办法在同一个循环中声明这些词典?这样做的pythonic方法是什么?我目前有20个不同的数据类型,但我只能在从网络数据构建字典之前单独对每个数据进行delcare。

for i in audit_dicts:
    i = {}

2 个答案:

答案 0 :(得分:6)

列表不包含名称,它们包含对其他对象的引用。如果您希望能够使用多个索引来引用元素,那么您应该使用其他数据结构,例如dict

答案 1 :(得分:0)

如果为此对象设置了属性,则可以使用__name__属性:

audit_dicts = [ osdata, weblogic, tomcat ]
for i in audit_dicts:
  name = "unknown";
  try:
    if __name__ in i:
      name = i.__name__;
  except:
    pass
  print "Length of the %s dictionary is %d lines." % (name, len(i))

但你最好使用dict而不是list:

audit_dicts = {
  "osdata":osdata, 
  "weblogic":weblogic, 
  "tomcat":tomcat
  }
for key in audit_dicts:
    print "Length of the %s dictionary is %d lines." % (key, len(audit_dicts[key]))
相关问题