Можно использовать звездочки в AssemblyInfo.cs:
// Version information
[assembly: AssemblyVersion( "1.0.*" )]
Это увеличит Ваш versionnumbers автоматически. Для совместного использования одного числа между всеми блоками... Я не уверен, но возможно Вы используете упомянутый атрибут в совместно используемом файле.
Обычный шаблон здесь аналогичен сортировке по атрибуту, украшению, работе и отмене декорирования. Так что в этом случае вам просто нужно украсить, а затем позвонить. Однако вы бы не хотели этого делать, так как decorate будет O (n), тогда как вы хотите, чтобы это было O (logn). Поэтому я считаю ваш метод лучшим.
Когда вы говорите, что реальные данные могут быть намного длиннее, мешает ли это вам хранить список значений смещения под рукой?
offset_values = [i['offset'] for i in test_data]
bisect.bisect(offset_values, 1900)
Мне кажется, ваш метод подходит.
Вы можете сделать это
class OffsetWithAttributes( object ):
def __init__( self, offset, **kw ):
self.offset= offset
self.attributes= kw
def __eq__( self, other ):
return self.offset == other.offset
def __lt__( self, other ):
return self.offset < other.offset
def __le__( self, other ):
return self.offset <= other.offset
def __gt__( self, other ):
return self.offset > other.offset
def __ge__( self, other ):
return self.offset >= other.offset
def __ne__( self, other ):
return self.offset != other.offset
. Это должно позволить вам создать простой список
экземпляров OffsetWithAttributes
. Алгоритм bisect
должен быть полностью счастлив использовать определенные операторы.
Вы можете использовать свои someOWA.attributes ['data']
.
Или
def __getattr__( self, key ):
return self.attributes[key]
Это должно сделайте OffsetWithAttributes
больше похожим на dict
.