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

具有优先级的字符串中的Python搜索字典键,python,search,dictionary,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
。我有一本字典:
{'69773330':'something','697733304':'something'}
。 我所需要做的就是让我的代码先搜索一个键
697733304
,然后在执行以下操作时搜索
69773330

print datastring
for key in my_dictionary.keys():
    if key in datastring:
        print key
示例输出:

697733304440804980633599594374136
697733304
69773330
请帮帮我;)
我想这是显而易见的解决方案,但现在我看不到了。

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

另外,请记住字典键的顺序不会保留,而且由于键是字符串(而不是数字),因此您应该在不保留的情况下对它们进行排序

编辑: 正如@padraiccanningham所指出的,我们甚至可以省略.keys/.iterkeys,因为它在
sort
for/loop
中已经默认为键

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

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

另外,请记住字典键的顺序不会保留,而且由于键是字符串(而不是数字),因此您应该在不保留的情况下对它们进行排序

编辑: 正如@padraiccanningham所指出的,我们甚至可以省略.keys/.iterkeys,因为它在
sort
for/loop
中已经默认为键

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

因此,我运行了您的代码并将其作为输出:

697733304440804980633599594374136

69773330

697733304

所以唯一的区别是你想要颠倒顺序

如果是:

for key in reverse(my_dictionary.keys()):
如果您希望它们始终按照该顺序出现,而不管它们是如何输入的,您可以执行以下操作:

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

因此,我运行了您的代码并将其作为输出:

697733304440804980633599594374136

69773330

697733304

所以唯一的区别是你想要颠倒顺序

如果是:

for key in reverse(my_dictionary.keys()):
如果您希望它们始终按照该顺序出现,而不管它们是如何输入的,您可以执行以下操作:

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

正如我所说,答案显而易见:)


感谢上帝让stackoverflow:)

正如我所说,有一个显而易见的答案:)



感谢上帝stackoverflow:)

“先搜索一个键69773330,然后再搜索69773330”这些数字是相同的吗?打字错误?谢谢。这是一个错误。我刚刚编辑了这篇文章。我发现很难理解你想做什么?@NRKirby我想他是想按照特定的顺序反复浏览字典。“先搜索一个键69773330,然后再搜索69773330”这些是相同的数字?打字错误?谢谢。这是一个错误。我刚刚编辑了这篇文章。我发现很难理解你想做什么?@NRKirby我想他是想按照特定的顺序反复阅读字典。我在stackoverflow上只使用了字符串:)@AlexeySlaykovsky,只要你知道:)我确实需要为其他人指出它。如果你能编辑它,那就太好了。你可以调用sorted on d
sorted(d)
@padraiccningham,非常正确。现在编辑,谢谢!我在这里只在stackoverflow上使用了string:)@AlexeySlaykovsky,只要你们知道:)不过我需要为其他人指出这一点。如果你能编辑它,那就太好了。你可以调用sorted on d
sorted(d)
@padraiccningham,非常正确。现在编辑,谢谢!为什么要反转<代码>'69773330'<'697733304'==True正确点,已更新。您的第一次尝试只是因为没有保留键的顺序…为什么要反转<代码>'69773330'<'697733304'==True良好点,已更新。您的第一次尝试只是因为未保留密钥顺序。。。