我已经定义了几个我在列表中引用的词典。我想使用字典的名称作为变量而不是它的值。我的代码(解析为字典值,而不是它的名字)是这样的:
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语句中的字典名称。任何人都可以告诉我这里需要的语法是什么?
由于
答案 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]: