提问: 如何实现 拼多多员工[1] 这样的显示方式? #dbrel #listproc
编号和命名都是与用户分类 1:1 相关的 grouping ,上下文分三层, 帖子:分类:用户
帖子:分类 计 Int
分类:用户 计 String
#Python
分组计数器
第二层 用户分类:用户引用
实践:
编号和命名都是与用户分类 1:1 相关的 grouping ,上下文分三层, 帖子:分类:用户
帖子:分类 计 Int
分类:用户 计 String
u.tag.let {"$it[${g2[it]}]"}
#Python
class Group:
def __init__(): self.d={}
def __getitem__(self,k): return self.d[k]
def add(self, k, v):
vs = self.d.get(k)
if vs == None: vs = self.empty(); self.d[k]=vs
self.append(vs, v)
empty = lambda o: []
def append(self, vs, v): vs.append(v)
分组计数器
class CountGroup(Group):
empty = lambda o: 0
append = lambda o, a, b: a+b
第二层 用户分类:用户引用
class Namer:
def __init__(self): self.cg=CountGroup(); self.names={}
def tag(self,u): return u[0]
def name(self, u):
self.cg.add(u, 1)
nam=self.names
if u not in nam: nam[u] = f"{self.tag(u)}[{self.cg[u]}]"
return nam[u]
实践:
def at_apost(us):
c = Namer()
return [c.name(u[0]) for u in us]
def datUsers(s, d={"拼":"拼多多","啊":"阿里巴巴","京":"京东"}):
us = [(d[u[0]]+"员工",u[1]) for u in s.split(" ")]
return us
at_apost(datUsers("拼a 拼b 拼a 拼a 阿a 京a 京b"))