打印列表中使用的字典名称而不是它的值

时间:2014-08-16 00:09:38

标签: python list dictionary

我已经定义了几个我在列表中引用的词典。我想使用字典的名称作为变量而不是它的值。我的代码(解析为字典值,而不是它的名字)是这样的:

prem_year_map = {
 1999: 2,
 2000: 85,
 2001: 191,
 2002: 299,
 2003: 429,
 2004: 594,
 2005: 836,
 2006: 667,
 2007: 1256,
 2008: 1539,
 2009: 1849,
 2010: 2458,
 2011: 2935,
 2012: 3389,
 2013: 3853,
 2014: 4311, }

year_tournament_map = {
    1999: 26,
    2000: 114,
    2001: 243,
    2002: 421,
    2003: 579,
    2004: 903,
    2005: 1291,
    2006: 1645,
    2007: 2175,
    2008: 2689,
    2009: 3419,
    2010: 4940,
    2011: 5861,
    2012: 6978,
    2013: 8273,
}


tournament_list = [prem_year_map,year_tournament_map]

for x in tournament_list:
    print x

我稍后在我的代码中使用if语句中的字典名称。任何人都可以告诉我这里需要的语法是什么?

由于

2 个答案:

答案 0 :(得分:3)

你想要做的事是不可能的。将字典添加到列表中时,您实际执行的操作是将指向字典的指针添加到列表中。您使用的变量名称也是另一个指向字典的指针。事实上,你可以拥有无​​限数量的指向同一个字典的指针,所以没有办法让它们回来。

您要做的是使用字典而不是列表。如果订单对您很重要,请使用OrderedDict。然后,您可以将名称(键)映射到值(字典)。

答案 1 :(得分:-1)

您可以按如下方式识别字典对象:

if d is prem_year_map:

此外,您可以执行以下操作(假设dicts在函数外部的同一文件中定义):

list_of_dicts= ['prem_year_map', 'year_tournament_map']  # etc
selected_dictname = list_of_dicts[n]

if selected_dictname == 'prem_year_map':
    yadda_yadda()

# access the dict
selected_dict = globals()[selected_dictname]  # look it up by name
val = selected_dict[2004]      #looks up entry.

如果您有字典d和字符串(包含变量名称)dname,并且您想检查它们是否引用相同的字典:

if d is globals()[dname]: