我还没有太多的软件设计经验,所以我不确定程序员通常是如何解决这类问题的。我基本上是在创建一些值,并将它们存储在字典中,但名称并不唯一。我知道在字典中存储相同的键名是不可能的,但是软件工程师如何解决这个问题(我确信我不是第一个面对这个问题的人)?
我认为一些代码会更容易理解(两个列表,一个是动物和水果,然后在两者之间生成一个随机值。我正在尝试找出如何存储这些数据,以便以后使用它):
lista = ['dog', 'cat', 'elephant', 'pig', 'bear']
listb = ['apple', 'pear']
dict_of_lists_values = {}
for list_a in lista:
for list_b in listb:
#print list_a, list_b
#print lista.index(list_a), listb.index(list_b), lista.index(list_a) * listb.index(list_b)
dict_of_lists_values[list_a] = [lista.index(list_a) * listb.index(list_b), list_b]
for lists_data in dict_of_lists_values:
print lists_data, ' holds ', dict_of_lists_values[lists_data]您看到的最终结果是:
elephant holds [2, 'pear']
pig holds [3, 'pear']
dog holds [0, 'pear']
bear holds [4, 'pear']
cat holds [1, 'pear']这是完全有意义的,因为它覆盖了之前的结果(列表中将包含苹果,而不是梨)。如果我想存储所有10个结果而不仅仅是唯一的5个结果,我如何重新设计它?
提前谢谢。
发布于 2012-02-07 00:57:02
您可以使用组合键。例如,您可以使用每个列表中元素的元组作为键,因此您将拥有:
dict_of_lists_values[(list_a, list_b)] = lista.index(list_a) * listb.index(list_b)然后得到相同的输出:
for lists_data in dict_of_lists_values:
print lists_data[0], ' holds ', dict_of_lists_values[lists_data], lists_data[1]发布于 2012-02-07 00:48:00
如果相同的名字意味着识别不同的东西,那么肯定有其他方法来区分这三种不同的猪:使用它作为你的钥匙。
发布于 2012-02-07 01:20:50
看起来你正在尝试为每种动物建立一种库存模型,对吧?不是直接分配一个配对计数,水果作为值,而是用一个空字典初始化每个动物,并将每个动物的库存存储在那里:
bigdict = { } # was: dict_of_lists_values
for a in lista:
bigdict[a] = { }
for a in lista:
for b in listb:
lista[a][b] = lista.index(a) * listb.index(b) # or whateverhttps://stackoverflow.com/questions/9163744
复制相似问题