【问题标题】:Python search dictionary key in string with priority [closed]具有优先级的字符串中的Python搜索字典键[关闭]
【发布时间】:2015-06-16 15:30:18
【问题描述】:

嗨!

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

我需要做的就是让我的代码先搜索一个键 697733304,然后再搜索 69773330

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

示例输出:

697733304440804980633599594374136
697733304
69773330

请帮帮我;)

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

【问题讨论】:

  • "先搜索一个键 69773330,然后再搜索 69773330" 这些是相同的数字吗?错字?
  • 谢谢。那是一个错误。我刚刚编辑了帖子。
  • 我很难理解您要做什么?
  • @NRKirby 我认为他正试图以特定顺序遍历字典。

标签: python search dictionary


【解决方案1】:

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

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

编辑:

正如 @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

【讨论】:

  • 我只在 stackoverflow 上使用了字符串 :)
  • @AlexeySlaykovsky,只要你知道 :) 我确实需要为其他人指出这一点。如果您也可以编辑它会很棒
  • 你可以直接调用 sorted on d sorted(d)
  • @PadraicCunningham,非常正确。现已编辑,谢谢!
【解决方案2】:

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

697733304440804980633599594374136

69773330

697733304

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

如果是这样:

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

如果您希望它们始终按该顺序出现,而不管它们是如何输入的,您可以这样做:

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

【讨论】:

  • 为什么要反转? '69773330' < '697733304' == True
  • 好点,已更新。
  • 您的第一次尝试只是因为没有保留键的顺序...
【解决方案3】:

正如我所说,答案很明显:)

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

感谢上帝的stackoverflow :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-13
    • 2014-07-16
    • 2020-05-05
    • 1970-01-01
    • 2017-10-07
    • 2021-03-13
    • 1970-01-01
    • 2013-10-21
    相关资源
    最近更新 更多