我有自定义类来模拟表中的一行(在数据库概念中),每列都是一个字符串。
class Row:
def __init__(self, filename, message, version):
self.filename = filename
self.message = message
self.version = version
我使用一个列表来存储它们。
假设我不知道每列的范围,我想把这个'表'转移到dicts的字典,
这样查询filename = OOO
和version = XXXX
的所有行都会更容易。
什么是更好的方法呢?现在我可以遍历所有行并为特定列构建范围,但它是一种意大利面条代码。
答案 0 :(得分:0)
最简单的可能是这样的。如果你知道你的行是不可变的,你可以提供一个哈希方法 - 这可能看起来更好一些。
#!/usr/local/cpython-3.3/bin/python
class Row:
def __init__(self, filename, message, version):
self.filename = filename
self.message = message
self.version = version
def __str__(self):
return '{} {} {}'.format(self.filename, self.message, self.version)
__repr__ = __str__
def main():
list_ = [
Row('abc', 'message1', 'version1'),
Row('def', 'message2', 'version2'),
Row('ghi', 'message3', 'version3'),
Row('jkl', 'message4', 'version4'),
Row('mno', 'message5', 'version5'),
]
dict_ = {}
for row in list_:
tuple_ = (row.filename, row.version)
dict_[tuple_] = row
sought = ('def', 'version2')
print(dict_[sought])
main()