1 回答

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
讓我們逐個(gè)看一下:
try:
sizes = []
for size in product.get('sizes'):
if size.get('atc'):
sizes.append('<{}|{}>'.format(size.get('atc'), size.get('size')))
else:
sizes.append(size.get('size'))
product['sizes'] = sizes
except Exception:
pass
你真的沒有任何地方可以拋出異常,除了size in product.get,它可能無法迭代None。
product['sizes'] = sizes = []
for size in product.get('sizes', ()):
sizes.append((size.get('size'), size.get('atc'))
sizelist = []
for i in (i for i in product['sizes'] if i not in sizelist):
sizelist.append(i)
讓我們嘗試將“atc”添加到?jīng)]有它的任何東西
atc_for_size = {}
for size, atc in sizes:
atc_for_size.setdefault(size, atc) # Keeps first found
sizelist = sorted(atc_for_size.items())
characterCount, i = 0, 0
for j, item in enumerate(sizelist):
if len(item) + characterCount > 900:
data['attachments'][0]['fields'].append(
{
'title': 'Sizes',
'value': '\n'.join(sizelist[i:j]) if len(sizelist) else '*Sizes not found*',
'short': True
}
)
characterCount, i = len(item), j
else:
characterCount += len(item)
if characterCount:
data['attachments'][0]['fields'].append(
{
'title': 'Sizes',
'value': '\n'.join(sizelist[i:]) if len(sizelist) else '*Sizes not found*',
'short': True
}
)
您在這里嘗試做什么并不明顯,您在帖子中提到字符有 1028 個(gè)限制,所以您需要盡可能多地適應(yīng)?
如果 1028 限制是針對(duì)整個(gè)數(shù)據(jù)對(duì)象的,則您需要進(jìn)行一些約束求解,并決定您是否寧愿只擁有不適合的尺寸,或者盡可能多地使用尺寸 + url,或者全部尺寸,最有可能的尺寸的 url 等等。如果不知道您在這里想要的行為,就沒有通用的解決方案。
如果您只需要將其分成足夠小的塊,那么您可以保留上面的邏輯,并在添加之前檢查它是否會(huì)使其太長(zhǎng)。
請(qǐng)注意,此時(shí)sizelistcontains (size, url_or_None),而不是格式化的字符串,因此當(dāng)您決定是否要包含 url 時(shí),您需要重新引入該格式。
添加回答
舉報(bào)