如何在字典键中快速解析出该字符串的前缀?
How to quickly parse out prefix to this string in dictionary key?
我在 Python 中有字典:
dict1 = {'first': 'ABCDE', 'second': 12345, 'third': KITTY , 'four': dogcatbirdelephant, ...}
明确地说,我正在解析数据并将其放入 Python 中的字典中。
我的问题:有时 third
的值有一个前缀。我没有值 KITTY
或 CAT
,而是 A:KITTY
或 K: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 的字符串方法非常有效,如何将数据提供给函数由您决定。
我在 Python 中有字典:
dict1 = {'first': 'ABCDE', 'second': 12345, 'third': KITTY , 'four': dogcatbirdelephant, ...}
明确地说,我正在解析数据并将其放入 Python 中的字典中。
我的问题:有时 third
的值有一个前缀。我没有值 KITTY
或 CAT
,而是 A:KITTY
或 K: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 的字符串方法非常有效,如何将数据提供给函数由您决定。