【数据分析面试】44.分析零售客户群体(Python 集合Set的用法)

在这里插入图片描述

题目

假设你是一家在线零售商的数据库管理员,需要分析两类客户的数据。一个集合 purchased_customers 包含在最近一次促销活动中购买了商品的客户ID,另一个集合 newsletter_subscribers 包含订阅了新闻通讯的客户ID。编写一个函数 analyze_customers,返回一个包含以下内容的字典:

  • 既购买了商品又订阅了新闻通讯的客户ID集合
  • 只购买了商品但没有订阅新闻通讯的客户ID集合
  • 只订阅了新闻通讯但没有购买商品的客户ID集合
  • 购买商品和订阅新闻通讯的所有唯一客户ID集合

示例:

输入:

purchased_customers = {1001, 1002, 1003, 1004}
newsletter_subscribers = {1003, 1004, 1005, 1006}

输出:

def analyze_customers(purchased_customers, newsletter_subscribers) 
-> 
{'both': {1003, 1004},'only_purchased': {1001, 1002},'only_subscribed': {1005, 1006},'all_customers': {1001, 1002, 1003, 1004, 1005, 1006}
}

答案

解题思路

考虑使用python中关于集合的操作。注意题目要求生成一个字典,想想字典和集合有什么不同。

答案代码

def analyze_customers(purchased_customers, newsletter_subscribers):return {"both": purchased_customers & newsletter_subscribers,"only_purchased": purchased_customers - newsletter_subscribers,"only_subscribed": newsletter_subscribers - purchased_customers,"all_customers": purchased_customers | newsletter_subscribers}purchased_customers = {1001, 1002, 1003, 1004}
newsletter_subscribers = {1003, 1004, 1005, 1006}
result = analyze_customers(purchased_customers, newsletter_subscribers)
print(result)

集合(Set)的用法

集合(Set)用于存储多个不重复的元素。集合是无序的,并且元素不能重复。集合支持各种数学集合操作,如并集、交集和差集。

  1. 创建集合:使用花括号 {}或者 set()函数 。注意,空集合只能使用 set() 创建,因为 {} 被用来创建空字典。
  2. 集合的操作
    • 添加元素 使用 add() 方法
    • 移除元素:使用 remove()discard() 方法移除元素。区别是 remove() 在元素不存在时会引发 KeyError,而 discard() 不会
fruits = {"apple", "banana"}# 添加元素
fruits.add("cherry")
print(fruits)  # 输出: {'apple', 'banana', 'cherry'}# 移除元素
fruits.remove("banana")
print(fruits)  # 输出: {'apple', 'cherry'}fruits.discard("banana")  # 不引发错误
  1. 集合的运算
    • 并集:使用 union() 方法或 | 运算符
    • 交集:使用 intersection() 方法或 & 运算符
    • 差集:使用 difference() 方法或 - 运算符
    • 对称差集:使用 symmetric_difference() 方法或 ^ 运算符。(对称差集是所有属于一个集合但不属于另一个集合的元素。)
A = {1, 2, 3}
B = {3, 4, 5}# 并集
print(A.union(B))  # 输出: {1, 2, 3, 4, 5}
print(A | B)       # 输出: {1, 2, 3, 4, 5}# 交集
print(A.intersection(B))  # 输出: {3}
print(A & B)              # 输出: {3}# 差集
print(A.difference(B))  # 输出: {1, 2}
print(A - B)            # 输出: {1, 2}# 对称差集
print(A.symmetric_difference(B))  # 输出: {1, 2, 4, 5}
print(A ^ B)                      # 输出: {1, 2, 4, 5}

更多详细答案可关注公众号查阅。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/703926.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二进制搭建k8s

实验环境: k8s集群master01:192.168.1.11 k8s集群master02:192.168.1.22 master虚拟ip:192.168.1.100 k8s集群node01:192.168.1.33 k8s集群node01:192.168.1.44 nginxkeepalive01(master):192.168.1.55 nginxkeepalive02&a…

mmdetection训练(1)voc格式的数据集(自制)

mmdetection训练(1)voc格式的数据集(自制) 提前准备一、voc数据集二、修改配置代码进行训练(敲黑板!!!!!)1.数据集相关内容修改2.自定义配置文件构…

1688阿里商品详情API接口(标题|主图|SKU|价格等属性)

1688阿里商品详情API接口(标题|主图|SKU|价格等属性) 通过1688开放平台的商品详情信息API接口,开发者可以获取商品的详细信息,包括商品名称、价格、库存、描述、参数等。这些信息对于构建电商应用、比价工具或进行数据分析都是非常有用的 可以获取任意1…

详细教程!VMware Workstation Pro16 安装 + 创建 win7 虚拟机!

嚯嚯嚯,很多宝子都想拥有自己不同的操作系统环境,用于学习或项目搭建。买服务器费钱,虚拟机则成为了一个很好的选择。本文详细介绍VMware Workstation Pro 16安装及win7虚拟机创建,保姆级教程奉上! 一、准备工作 VMw…

【C++算法】堆相关经典算法题

1.最后一块石头的重量 其实就是一个模拟的过程:每次从石堆中拿出最大的元素以及次大的元素,然后将它们粉碎;如果还有剩余,就将剩余的石头继续放在原始的石堆里面重复上面的操作,直到石堆里面只剩下一个元素&#xff0c…

住宅IP vs 数据中心代理IP

IP代理种类很多,其中包括住宅代理,数据中心代理,HTTP代理等多种分类。今天我们来介绍一下住宅IP代理与数据中心代理的区别。 住宅IP含义 住宅IP是指海外互联网服务供应商分配给家庭的IP地址,是固定的IP地址,可以为用户…

Leecode热题100---11:盛最多水的容器

题目: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾…

Spring AI项目配置1.0.0-SNAPSHOT快照版指导

Spring AI项目配置1.0.0-SNAPSHOT快照版开发指导 说明pom文件修改 说明 请在更换Spring AI的全程中,科学上网,因为国内镜像和maven官方仓库还没有Spring AI的依赖,需要的依赖目前存放在https://repo.spring.io如果你使用的maven是自己配置&a…

鸿蒙生态融合进行时!菊风启动适配HarmonyOS NEXT,赋能原生应用实时

​​今日话题 鸿蒙HarmonyOS NEXT 自华为公开宣布鸿蒙 HarmonyOS NEXT 系统以来,该系统受到了业内广泛关注,和以往鸿蒙系统不同的是该系统底座完全由华为自研,摒弃了 Linux 内核和安卓 AOSP 代码,仅兼容鸿蒙内核及鸿蒙系统的应用…

navicat 无法连接mysql8

select host,user,authentication_string,plugin from mysql.user; alter user root%IDENTIFIED WITH mysql_native_password BY root; flush PRIVILEGES; select host,user,authentication_string,plugin from mysql.user;

嗨动PDF编辑器怎么对pdf修改?分享修改步骤

嗨动PDF编辑器怎么对pdf修改?PDF(Portable Document Format)格式因其跨平台、不易修改的特性,在日常工作和学习中得到了广泛的应用。然而,当需要对PDF文件进行修改时,许多人可能会感到困扰。此时&#xff0…

GPT4 是如何将文本 token 化的?

本文给出一个 GPT4 模型可视化token的工具网站,大家可以去上面测试一下效果。 网址: https://platform.openai.com/tokenizer 使用说明 通过该网站工具,你可以了解一段文本如何被GPT-4模型token化的,以及文本的被token化之后的…