我有一个类似的功能:
def GetMapping(mappings, key):
mapping = mappings.get(key)
if mapping is None:
currentMax = mappings.get("max", 0)
mapping = currentMax + 1
mappings["max"] = mapping
mappings[key] = mapping
return mapping, mappings
基本上,给定字典mappings
和密钥key
,该函数返回与密钥相关联的值(如果存在)。
如果没有,它会在字典中找到当前最大ID,存储在键“最大”下,将其分配给此键,并更新最大值
我想知道是否有内置/不那么详细的方法来实现这个目标?
答案 0 :(得分:7)
您可以继承dict
并覆盖__missing__
方法。
class CustomMapping(dict):
def __missing__(self, key):
self[key] = self['max'] = self.get('max', 0) + 1
return self[key]
d = CustomMapping()
d['a'] # 1
d['b'] # 2
d['a'] # 1
d # {'a': 1, 'b': 2, 'max': 2}
正如@ Code-Apprentice指出的那样,最好在max
方法中设置__init__
属性。这避免了潜在的密钥冲突(即恰好命名为"max"
的密钥)。
答案 1 :(得分:0)
假设您实际上不需要/希望从外部控制$sql = "SELECT count(*) FROM students";
$result = mysqli_query($conn, $sql);
$student= mysqli_fetch_assoc($result);
项,而只是自动递增ID:
'max'
演示:
defaultdict(count(1).next)