如何打印字典的子集键值对?及用Pandas筛选指定品牌产品并生成表格
让我分别帮你解决这两个问题:
问题1:如何仅打印字典的子集键值对组合?
有几种简单高效的方法可以实现这个需求,我给你列几个最常用的:
方法1:字典推导式(推荐)
这是Python里最简洁直观的方式,适合你明确知道要保留哪些键的场景:
original_dict = {"name": "Alice", "age": 30, "city": "New York", "job": "Engineer"} # 定义要保留的键列表 target_keys = ["name", "city"] # 生成子集字典 subset_dict = {key: original_dict[key] for key in target_keys if key in original_dict} # 打印结果 print(subset_dict) # 输出: {'name': 'Alice', 'city': 'New York'}
加个if key in original_dict的判断是为了避免原字典里没有目标键时抛出KeyError,让代码更健壮。
方法2:使用dict()构造器+生成器表达式
如果你习惯用生成器的写法,也可以这么做,效果和推导式完全一致:
subset_dict = dict((key, original_dict[key]) for key in target_keys if key in original_dict)
方法3:手动遍历(适合新手理解逻辑)
如果你想更清晰地看到每一步的操作,可以手动遍历键值对:
subset_dict = {} for key, value in original_dict.items(): if key in target_keys: subset_dict[key] = value print(subset_dict)
问题2:过滤Pandas DataFrame中的特定品牌产品
假设你的爬取数据字典结构是这样的(键是列名,值是对应列的所有数据):
crawled_data = { "brand": ["Atomic", "Burton", "Atomic", "Salomon"], "product_type": ["Carving Ski", "Snowboard", "Carving Ski", "Freestyle Ski"], "price": [699, 499, 799, 599], "model": ["Redster S9", "Custom X", "Redster S10", "QST 92"] }
下面是具体的实现步骤:
1. 将字典转为Pandas DataFrame
首先把你的字典转换成DataFrame:
import pandas as pd df = pd.DataFrame(crawled_data)
2. 过滤特定品牌+产品类型
用布尔索引就能轻松筛选出你要的Atomic品牌刻滑雪板数据,而且会自动保留brand字段:
# 仅保留Atomic品牌的刻滑雪板 filtered_df = df[(df["brand"] == "Atomic") & (df["product_type"] == "Carving Ski")]
如果你的产品名称里可能有大小写差异(比如"carving ski"),可以用str.contains并忽略大小写:
filtered_df = df[(df["brand"] == "Atomic") & (df["product_type"].str.contains("carving ski", case=False))]
3. 打印过滤后的表格
直接打印filtered_df就能看到结果,或者用to_string()让输出更整齐:
print(filtered_df.to_string())
输出会是这样的:
brand product_type price model 0 Atomic Carving Ski 699 Redster S9 2 Atomic Carving Ski 799 Redster S10
内容的提问来源于stack exchange,提问作者Yoda
相关产品推荐
相关产品推荐

