我对python非常陌生,我有以下问题。我想出了以下解决办法。我想知道它是不是“Python”。如果不是,最好的解决方案是什么?你知道吗
问题是:
这是我的python示例
import collections
import random
# lets build the list, for the example
dicts = []
dicts.append({'idName':'NA','idGroup':'GA','idFamily':'FA'})
dicts.append({'idName':'NA','idGroup':'GA','idFamily':'FB'})
dicts.append({'idName':'NA','idGroup':'GB','idFamily':'FA'})
dicts.append({'idName':'NA','idGroup':'GB','idFamily':'FB'})
dicts.append({'idName':'NB','idGroup':'GA','idFamily':'FA'})
dicts.append({'idName':'NB','idGroup':'GA','idFamily':'FB'})
dicts.append({'idName':'NB','idGroup':'GB','idFamily':'FA'})
dicts.append({'idName':'NB','idGroup':'GB','idFamily':'FB'})
# let's shuffle it, again for example
random.shuffle(dicts)
# now I want to have for each combination the index
# I use a recursive defaultdict definition
# because it permits creating a dict of dict
# even if it is not initialized
def tree(): return collections.defaultdict(tree)
# initiate mapping
mapping = tree()
# fill the mapping
for i,d in enumerate(dicts):
idFamily = d['idFamily']
idGroup = d['idGroup']
idName = d['idName']
mapping[idName][idGroup][idFamily] = i
# I end up with the mapping providing me with the index within
# list of dicts
在我看来是合理的,但也许有点过分了。你可以这样做:
然后用
mapping['NA', 'GA', 'FA']
而不是mapping['NA']['GA']['FA']
访问它。但这实际上取决于您计划如何使用mapping
。如果你需要能够将mapping['NA']
作为字典使用,那么你所拥有的就足够了。你知道吗相关问题 更多 >
编程相关推荐