Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
语法:
dict.setdefault(key, default=None)
实例:
dict = {‘runoob‘: ‘菜鸟教程‘, ‘google‘: ‘Google 搜索‘} print "Value : %s" % dict.setdefault(‘runoob‘, None) print "Value : %s" % dict.setdefault(‘Taobao‘, ‘淘宝‘)
#!./usr/bin/env python # -*- coding: utf-8 -*- # Date: 2019/2/28 iterable = {‘user‘: ‘alex‘, ‘user1‘: ‘wusir‘, ‘user2‘: ‘xdc‘} values = {‘user‘: [‘sch‘]} other_value = ‘test‘ # demo1 for element in iterable: if element not in values: values[element] = [] values[element].append(other_value) print(iterable) # {‘user2‘: ‘xdc‘, ‘user‘: ‘alex‘, ‘user1‘: ‘wusir‘} print(values) # {‘user2‘: [‘test‘], ‘user‘: [‘sch‘, ‘test‘], ‘user1‘: [‘test‘]} # demo2 for element in iterable: values.setdefault(element, []).append(other_value) print(iterable) # {‘user2‘: ‘xdc‘, ‘user‘: ‘alex‘, ‘user1‘: ‘wusir‘} print(values) # {‘user2‘: [‘test‘, ‘test‘], ‘user‘: [‘sch‘, ‘test‘, ‘test‘], ‘user1‘: [‘test‘, ‘test‘]}
可以思考一下是否可用于评率限制
逻辑:
以用户的唯一标示为键,再以用户的访问记录的列表为值;在用户下一次访问时判断列表的最后一个是否小于(当前时间-频率时间);如果小于,则剔除;
然后再判断列表的长度时候超过频率数,如超过,则return false,else true
数据结构:
{
192.168.1.2:[234234234,234234228,234234210],
192.168.1.3:[234234234,234234228,234234210],
}
原文:https://www.cnblogs.com/sunch/p/10448922.html