我在Python中有一本字典:
dict1 = {'first': 'ABCDE', 'second': 12345, 'third': KITTY , 'four': dogcatbirdelephant, ...}
要清楚,我正在解析数据并将其放入Python中的字典中。
我的问题:有时third
的值会有前缀。我有KITTY
或CAT
,而不是值A:KITTY
或K:CAT
。前缀可以是任何字母,并且总是有一个冒号将我想要的值(例如KITTY
)与前缀I(A:
)
但是,并非所有值都是这样的。有些实际上是没有前缀的字符串。
如果我保存“冒号后的所有内容”,我怎么能解析这些字典值呢?有人会用for语句检查吗? (我宁愿避免这种情况,因为我认为会有很大的性能损失。)
答案 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的字符串方法非常有效,您决定如何将数据提供给函数。