Python 如何快速解析字典键中此字符串的前缀?
我有一本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:)分开 但是,并非所有值都
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
美观。不要只是粘贴我的烂代码!