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

2024-06-16 13:00:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本Python词典:

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

为了清楚起见,我正在解析数据并将其放入Python的字典中。你知道吗

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

然而,并非所有的值都是这样的。有些实际上是没有前缀的字符串。你知道吗

如果我保存“冒号后面的所有内容”,如何解析这些字典值?你能用for语句检查一下吗?(我更希望避免这种情况,因为我认为这会对性能造成实质性的影响。)


Tags: 数据字符串字典字母cat词典firstfour
1条回答
网友
1楼 · 发布于 2024-06-16 13:00:17

@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的string方法非常高效,如何将数据提供给函数是您的决定。你知道吗

相关问题 更多 >