算法Python:用字典进行计数

本文详细介绍了如何使用Python字典进行计数,展示了在网页访问、商店销售、错误日志、社交媒体提及、投票系统等多个场景中的应用实例,展示了`cnts[level][urlComponent]=cnts[level].get(urlComponent,0)+1`这一核心代码在统计分析中的重要作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

目录

访问日志

十个使用场景

        1. **网页访问次数统计**:

        2. **商店每日销售统计**:

        3. **错误日志统计**:

        4. **社交媒体提及统计**:

        5. **投票系统**:

        6. **交通流量统计**:

        7. **API 调用次数限制**:

        8. **游戏中的物品采集统计**:

        9. **图书馆借阅统计**:

        10. **在线课程观看次数**:


        cnts[level][urlComponent] = cnts[level].get(urlComponent, 0) + 1

        这段代码是Python中用于计数的常见代码。它是一个使用字典进行计数的示例,它的作用是统计特定级别和URL组件出现的次数。让我们对这段代码进行解释:


cnts[level][urlComponent] = cnts[level].get(urlComponent, 0) + 1


# - `cnts` 是一个字典,它的键是级别(level),
# 对应的值也是一个字典,它的键是URL组件(urlComponent),对应的值是出现的次数。

# - `cnts[level]` 获取了指定级别的字典。
# 如果该级别的字典不存在,则会创建一个新的字典。

# - `cnts[level].get(urlComponent, 0)` 从指定级别的字典中获取指定URL组件的值,
# 如果URL组件不存在,则默认为0。

# - `cnts[level][urlComponent] = cnts[level].get(urlComponent, 0) + 1` 
# 把指定级别的URL组件出现次数加1,然后更新到字典中。

访问日志

        举个例子,假设我们有一个网站访问日志,我们要统计每个页面级别(例如首页、产品页、关于页)的各个URL组件(例如不同的产品、不同的文章)出现的次数。我们可以使用上述代码来实现这一功能。例如:

# 初始化计数器
cnts = {}

# 模拟日志数据
log_data = [
    {"level": "homepage", "urlComponent": "banner"},
    {"level": "homepage", "urlComponent": "menu"},
    {"level": "product", "urlComponent": "item1"},
    {"level": "product", "urlComponent": "item2"},
    {"level": "product", "urlComponent": "item1"},
    {"level": "about", "urlComponent": "history"},
    {"level": "about", "urlComponent": "team"}
]

# 统计每个级别和URL组件的出现次数
for entry in log_data:
    level = entry["level"]
    urlComponent = entry["urlComponent"]
    cnts[level] = cnts.get(level, {})
    cnts[level][urlComponent] = cnts[level].get(urlComponent, 0) + 1

print(cnts)
# 打印结果{'homepage': {'banner': 1, 'menu': 1}, 'product': {'item1': 2, 'item2': 1}, 'about': {'history': 1, 'team': 1}}

在这个示例中,我们模拟了一个访问日志数据,并使用上述代码来统计每个级别和URL组件的出现次数。通过这种方式,我们可以方便地进行数据的统计和分析。

十个使用场景

        下面是十个使用场景的示例代码,每个场景都使用了 `cnts[level][urlComponent] = cnts[level].get(urlComponent, 0) + 1` 这行代码来累加计数:

        1. **网页访问次数统计**:
cnts = {}
def log_page_visit(date, page):
    cnts[date] = cnts.get(date, {})
    cnts[date][page] = cnts[date].get(page, 0) + 1

log_page_visit('2023-04-01', '/home')
log_page_visit('2023-04-01', '/about')
log_page_visit('2023-04-01', '/home')  # '/home' 页面在 '2023-04-01' 的访问次数加 1

        2. **商店每日销售统计**:
cnts = {}
def record_daily_sale(date, product):
    cnts[date] = cnts.get(date, {})
    cnts[date][product] = cnts[date].get(product, 0) + 1

record_daily_sale('2023-04-01', 'apple')
record_daily_sale('2023-04-01', 'banana')
record_daily_sale('2023-04-02', 'apple')  # 'apple' 在 '2023-04-02' 的销售次数加 1

        3. **错误日志统计**:
cnts = {}
def log_error(date, error_code):
    cnts[date] = cnts.get(date, {})
    cnts[date][error_code] = cnts[date].get(error_code, 0) + 1

log_error('2023-04-01', '404')
log_error('2023-04-01', '500')
log_error('2023-04-01', '404')  # '404' 错误在 '2023-04-01' 的统计次数加 1

        4. **社交媒体提及统计**:
cnts = {}
def count_mentions(date, hashtag):
    cnts[date] = cnts.get(date, {})
    cnts[date][hashtag] = cnts[date].get(hashtag, 0) + 1

count_mentions('2023-04-01', '#python')
count_mentions('2023-04-01', '#coding')
count_mentions('2023-04-02', '#python')  # '#python' 标签在 '2023-04-02' 的提及次数加 1

        5. **投票系统**:
cnts = {}
def record_vote(election, candidate):
    cnts[election] = cnts.get(election, {})
    cnts[election][candidate] = cnts[election].get(candidate, 0) + 1

record_vote('2023_election', 'Alice')
record_vote('2023_election', 'Bob')
record_vote('2023_election', 'Alice')  # 'Alice' 在 '2023_election' 的票数加 1

        6. **交通流量统计**:
cnts = {}
def count_cars(date, highway):
    cnts[date] = cnts.get(date, {})
    cnts[date][highway] = cnts[date].get(highway, 0) + 1

count_cars('2023-04-01', 'I-5')
count_cars('2023-04-01', 'I-10')
count_cars('2023-04-02', 'I-5')  # 'I-5' 高速在 '2023-04-02' 的车流量加 1

        7. **API 调用次数限制**:
cnts = {}
def track_api_usage(user, api_endpoint):
    cnts[user] = cnts.get(user, {})
    cnts[user][api_endpoint] = cnts[user].get(api_endpoint, 0) + 1

track_api_usage('user123', '/get_data')
track_api_usage('user123', '/post_data')
track_api_usage('user123', '/get_data')  # 'user123' 对 '/get_data' API 的调用次数加 1

        8. **游戏中的物品采集统计**:
cnts = {}
def collect_item(player, item):
    cnts[player] = cnts.get(player, {})
    cnts[player][item] = cnts[player].get(item, 0) + 1

collect_item('player1', 'gold_coin')
collect_item('player1', 'silver_coin')
collect_item('player1', 'gold_coin')  # 'player1' 收集的 'gold_coin' 数量加 1

        9. **图书馆借阅统计**:
cnts = {}
def log_book_borrow(date, book_id):
    cnts[date] = cnts.get(date, {})
    cnts[date][book_id] = cnts[date].get(book_id, 0) + 1

log_book_borrow('2023-04-01', 'B123')
log_book_borrow('2023-04-01', 'B456')
log_book_borrow('2023-04-01', 'B123')  # 'B123' 书籍在 '2023-04-01' 的借阅次数加 1

        10. **在线课程观看次数**:
cnts = {}
def count_course_view(course, user):
    cnts[course] = cnts.get(course, {})
    cnts[course][user] = cnts[course].get(user, 0) + 1

count_course_view('Python_Basics', 'user123')
count_course_view('Data_Science', 'user456')
count_course_view('Python_Basics', 'user123')  # 'user123' 对 'Python_Basics' 课程的观看次数加 1

以上场景都使用了这段代码来对某个特定的键进行值的累加计数,适用于多种不同的统计分析应用场景。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值