如何在字典键中快速解析出该字符串的前缀?

How to quickly parse out prefix to this string in dictionary key?

我在 Python 中有字典:

dict1 = {'first': 'ABCDE', 'second': 12345, 'third': KITTY , 'four': dogcatbirdelephant, ...}

明确地说,我正在解析数据并将其放入 Python 中的字典中。

我的问题:有时 third 的值有一个前缀。我没有值 KITTYCAT,而是 A:KITTYK:CAT。前缀可以是任何字母,并且总是有一个冒号将我想要的值(例如 KITTY)与我不需要的前缀(A:

分开

然而,并不是所有的值都是这样的。有些实际上是没有前缀的字符串。

如果我保存 "everything that comes after the colon",如何解析这些字典值?会用 for 语句检查吗? (我宁愿避免这种情况,因为我认为这会对性能造成重大影响。)

@PatrickHaugh 的回答是正确的。您可能需要进行一些过滤,因为您的示例列表既有整数又有字符串。

你的问题是 "I'm parsing data and throwing into a dictionary",所以我假设它们来自二元组中的某个地方,而不是来自另一个字典。

如果您已经在字典中拥有数据,那么您将不得不遍历键。

#!/usr/bin/env python

class Kitty(object):
    def __init__(self):
        self.d = {}

    def meow(self, k, v):
        """check for integers before adding to dictionary"""
        try:
            int(v)
            self.d[k] = v
        except ValueError:
            self.d[k] = v.split(":")[-1]

if __name__ == "__main__":
    kitty = Kitty()
    kitty.meow("first", 12345)
    kitty.meow("second", "A:KITTY")
    kitty.meow("third", "B:KITTY")
    kitty.meow("fourth", "C:KITTY")
    kitty.meow("fifth", "KITTY")
    kitty.meow("sixty", "kreplach")

    print(kitty.d)

这导致:

{'third': 'KITTY', 'second': 'KITTY', 'fourth': 'KITTY', 'sixty': 'kreplach', 'fifth': 'KITTY', 'first': 12345}

至于 "efficient",那是另一个问题。 Python 的字符串方法非常有效,如何将数据提供给函数由您决定。