列表python中重复的项目

时间:2011-08-21 22:10:40

标签: python list

我有一个庞大的字典(如数据库),我想找到一些特定的信息。我们称之为庞大的数据库A. 如果一个特定数量的新列表在A里面,我想打印一些信息。这就是我正在做的事(过度简化):

    A = {info1:34, info2:4, info3:-34, info4:2,.......}
    b = [1, 2, 3, 4, 5, 6, -1, -2, -3, -4, -5, -6]

    for i,j in A.iteritems():
      if j in b:
        print b, i

似乎工作正常,但在更好地研究结果后,我意识到代码只打印出它找到的第一个巧合。我怎么能改变它以获得我的数据库中的所有巧合。

感谢您的帮助!!!!

2 个答案:

答案 0 :(得分:0)

根据我的理解,你所尝试的是矫枉过正。这是一个利用dict实际上是hash

这一事实的解决方案
for item in b:
    if item in A:
        print A[item]

编辑:从你的编辑中看来,键和值是互换的。你为什么做这个?也许更好的方法是切换它们,这样我的上述解决方案就可以工作(它的很多效率更高,你只需要进行一次切换)。如果您需要多个相同的密钥,则可以使用MultiDict,例如paste.util.multidict.Multidict,可以pip install paste安装

答案 1 :(得分:0)

当你说“我意识到代码只打印出它找到的第一个巧合”时,听起来你希望你的代码为同一个键返回多个匹配。 Python的dict具有唯一的密钥,因此这是不可能的(并且实际上没有意义)。如果您尝试使用相同的密钥存储多个值,则只会破坏以前的值。