Python中不使用字典或Pandas实现嵌套列表按政党分组求和
手动实现按政党分组求和(不使用字典/Pandas)
嘿,这个需求很棒——手动实现分组统计能帮你彻底搞清楚底层逻辑,不用字典或者Pandas完全可行!我来一步步带你实现:
核心思路拆解
咱们不用现成工具的话,核心就是三个关键步骤:
- 先找出所有唯一的政党名称,避免重复统计
- 对每个政党,遍历原始列表,把对应县的票数逐个累加起来
- 最后把结果整理成清晰的对比表格
代码实现示例
先拿一组模拟数据来演示,你可以直接替换成自己的列表:
# 模拟的原始数据:[[county, political party, votes received]] sample_data = [ ["County A", "Democrat", 12000], ["County B", "Republican", 9500], ["County C", "Democrat", 15000], ["County D", "Independent", 3000], ["County E", "Republican", 11000] ] # 步骤1:提取所有唯一的政党 unique_parties = [] for entry in sample_data: party = entry[1] if party not in unique_parties: unique_parties.append(party) # 步骤2:逐个政党累加票数 vote_totals = [] for party in unique_parties: total_votes = 0 for entry in sample_data: if entry[1] == party: total_votes += entry[2] vote_totals.append([party, total_votes]) # 步骤3:输出结果(也可以整理成表格) print("各政党总票数统计:") for result in vote_totals: print(f"{result[0]}: {result[1]} 票")
生成对比表格
如果要生成更直观的Markdown表格,咱们可以把vote_totals转化成表格格式:
| 政党名称 | 总票数 |
|---|---|
| Democrat | 27000 |
| Republican | 20500 |
| Independent | 3000 |
小优化:封装成函数
如果你的数据量比较大,或者需要重复使用,可以把逻辑封装成函数,更整洁:
def calculate_party_votes(data): # 提取唯一政党 unique_parties = [] for entry in data: party = entry[1] if party not in unique_parties: unique_parties.append(party) # 计算总票数(用生成器表达式简化累加逻辑) totals = [] for party in unique_parties: total = sum(entry[2] for entry in data if entry[1] == party) totals.append([party, total]) return totals # 调用函数 final_results = calculate_party_votes(sample_data)
这个实现完全不依赖字典或者Pandas,纯靠基础的循环和条件判断就能完成,刚好符合你的需求~
内容的提问来源于stack exchange,提问作者New at programming
相关产品推荐
相关产品推荐

