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

时间:2016-11-18 19:00:11

标签: python dictionary string-parsing

我在Python中有一本字典:

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

要清楚,我正在解析数据并将其放入Python中的字典中。

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

分开。

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

如果我保存“冒号后的所有内容”,我怎么能解析这些字典值呢?有人会用for语句检查吗? (我宁愿避免这种情况,因为我认为会有很大的性能损失。)

1 个答案:

答案 0 :(得分:1)

@PatrickHaugh的回答是正确的。您可能想要进行一些过滤,因为您的示例列表包含整数和字符串。

你的问题是"我正在解析数据并扔进字典"所以我假设它们来自两元组中的某个地方,而不是来自另一个字典。

如果你已经在字典中有数据,那么你将不得不循环键。

#!/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}

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