Python搜索字典键在字符串中具有优先级

时间:2015-04-10 19:37:53

标签: python search dictionary

嗨!

我有一个字符串:697733304440804980633599594374136。我有一本字典:{'69773330': 'something', '697733304': 'something'}

我需要做的就是让我的代码首先搜索密钥697733304,然后在我执行时搜索69773330

print datastring
for key in my_dictionary.keys():
    if key in datastring:
        print key

示例输出:

697733304440804980633599594374136
697733304
69773330

请帮帮我吧;)

我想这是明显的解决方案,但现在我看不到它。

3 个答案:

答案 0 :(得分:2)

所以我运行了你的代码并将其作为输出:

697733304440804980633599594374136

69773330

697733304

所以唯一的区别是你想要逆转订单吗?

如果是这样的话:

for key in reverse(my_dictionary.keys()):

如果您希望他们始终按顺序排列,无论输入方式如何,您都可以:

for key in sorted(my_dictionary.keys()):

答案 1 :(得分:1)

在与字符串进行比较之前,只需对键进行排序。另外,不要使用string作为命名空间,它是python的string模块的阴影名称。

另外,请记住,字典键的顺序不会保留,并且因为您的键是字符串( NOT 编号),所以您应该在没有保留的情况下对它们进行排序。 / p>

编辑:

正如@ PadraicCunningham指出的那样,我们甚至可以省略.keys / .iterkeys,因为它在sortfor/loop已经默认为密钥。

>>> d = {'69773330': 'something', '697733304': 'something'}
>>> s = '697733304440804980633599594374136'
>>> for key in sorted(d):
...   if key in s:
...     print key
...
69773330
697733304

答案 2 :(得分:1)

正如我所说的那样明显的答案:)

for key in sorted(di.keys(), reverse=True):
    if key in new_key:
        print key

感谢上帝的stackoverflow:)