Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何快速解析字典键中此字符串的前缀?_Python_Dictionary_String Parsing - Fatal编程技术网

Python 如何快速解析字典键中此字符串的前缀?

Python 如何快速解析字典键中此字符串的前缀?,python,dictionary,string-parsing,Python,Dictionary,String Parsing,我有一本Python字典: dict1 = {'first': 'ABCDE', 'second': 12345, 'third': KITTY , 'four': dogcatbirdelephant, ...} 为了清楚起见,我正在解析数据并将其放入Python词典中 我的问题是:third的值有时有前缀。我没有使用值KITTY或CAT,而是使用A:KITTY或K:CAT。前缀可以是任何字母,并且总是有一个冒号将我想要的值(例如,KITTY)与我不想要的前缀(a:)分开 但是,并非所有值都

我有一本Python字典:

dict1 = {'first': 'ABCDE', 'second': 12345, 'third': KITTY , 'four': dogcatbirdelephant, ...}
为了清楚起见,我正在解析数据并将其放入Python词典中

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

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


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

@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的字符串方法非常高效,如何将数据提供给函数是您的决定。

mystring.split(':')[-1]
是否保证最多有一个冒号?例如,值的格式总是
b
a:b
在您想要
b
的地方,并且永远不会
a:b:c
在您想要
b:c
@PatrickHaugh的地方,如果没有
?它将返回什么?如果
mystring
没有
,那么
mystring.split(':')[-1]
返回
mystring
,这取决于你如何构建你的dict,但在最坏的情况下,你总是可以执行
dict1['third']=dict1['third'],检查类型时,使用
try
不如使用
isinstance
美观。不要只是粘贴我的烂代码!