Сначала функция помощника , адаптированная из парного рецепта itertools для создания подстрок.
import itertools
def n_wise(iterable, n = 2):
'''n = 2 -> (s0,s1), (s1,s2), (s2, s3), ...
n = 3 -> (s0,s1, s2), (s1,s2, s3), (s2, s3, s4), ...'''
a = itertools.tee(iterable, n)
for x, thing in enumerate(a[1:]):
for _ in range(x+1):
next(thing, None)
return zip(*a)
Затем функция выполняет итерацию по подстрокам, самая длинная во-первых, и тесты для членства. (эффективность не учитывается)
def foo(s1, s2):
'''Finds the longest matching substring
'''
# the longest matching substring can only be as long as the shortest string
#which string is shortest?
shortest, longest = sorted([s1, s2], key = len)
#iterate over substrings, longest substrings first
for n in range(len(shortest)+1, 2, -1):
for sub in n_wise(shortest, n):
sub = ''.join(sub)
if sub in longest:
#return the first one found, it should be the longest
return sub
s = "fdomainster"
t = "exdomainid"
print(foo(s,t))
>>>
domain
>>>
Ваш третий кодовый блок не предоставляет значение для create_date
. Это поле определено как часть ключа:
TableName : "sample",
KeySchema: [
{ AttributeName: "user_id", KeyType: "HASH"},
{ AttributeName: "created_date", KeyType: "RANGE"}
Вы должны предоставить оба user_id
и created_date
для уникальной идентификации записи.
Да, и это, вероятно, не вызывает проблемы, но это недопустимая дата, поскольку 2018 год не является високосным годом:
"created_date": "02-29-2018",
Дата хранится в виде строки, поэтому она не вызывает ошибка, но вы также можете рассмотреть вопрос о сохранении дат в более полезном формате, таком как YYYY-MM-DD
, который упрощает сортировку и позволяет избежать путаницы с форматированием даты в США (например, 01-02-2019
1 февраля или 2 января?). [ 1110]