dict = {'Name': '1', 'Content': ' a b c d e f g', 'Name': '2', 'Content': ' a h i j k l m', 'Name': '3', 'Content': ' a h n o p q r', 'Name': '4', 'Content': ' s t u v w x y'};
(也许我的dict应该是一个元组,我不知道什么是最好的:))
list = (a, h, n)
(列表元素并不总是相同的,用户将通过输入选择它们,并添加到列表中)
现在我要打印包含至少一个列表元素的所有词典键值对。在打印之前,我想通过降低列表元素在字典值中出现的次数来对输出进行排序。
输出应按如下方式排序:
Name: 3, Content: a h n o p q r
Name: 2, Content: a h i j k l m
Name: 1, Content: a b c d e f g
我不希望它打印"Name: 4, Content: s t u v w x y"
,因为a,h或n不在值中。
对不起我的糟糕的python语言,将非常感谢帮助! :)
答案 0 :(得分:1)
你不需要这里的词典,因为dict不能存储几个相同的键。如果你使用list或tuple,你也不需要对结果进行排序,只需按照适当的顺序构建你的列表并连续检查它:
elements = ((4, 'stuvwxy'), (3, 'ahnopqr'), (2, 'ahijklm'), (1, 'abcdefg'))
search = ('a', 'h', 'n')
for name, content in elements:
if any(x in content for x in search):
print "Name: {}, Content: {}".format(name, content)
UPD
如果您需要排序元素:
elements.sort(key=lambda x: x[0], reverse=True)