嵌套字符串列表中非重复字符串出现次数统计(含扩展条件)
嵌套列表字符串统计问题
我有如下嵌套字符串列表:
List = [['Jhon', 'Rana'], ['Rana', 'Rana'], ['Rana', 'Zhang'], ['Rana', ['Z', 'Y']]]
更新说明:该列表存在特殊结构,如['Rana', ['Z', 'Y']],表示Rana与Z、Y存在特殊关联,和Rana与Jhon的关联类型不同。
我需要统计列表中字符串的出现次数,要求两种输出结果:
- 要求1:遇到重复字符串(子列表内元素重复)则忽略该子列表的统计;
- 要求2:遇到重复字符串则仅计数1次,且需包含上述特殊嵌套结构中的元素统计。
示例结果
第一种输出(对应要求1):
Rana:2 Jhon:1 Zhang:1
第二种输出(对应要求2):
Rana:5 Jhon:1 Zhang:1
我尝试编写了以下代码,但未得到预期结果:
from collections import Counter List1=[["Rana", "Jhon"], ["Rana", "Rana"], ["Jhon", "Rana"], ["Rana", "Alex"]] count=0 n=0 for j in range (0, len(List1)-1): if (List1[j][0] == List1[j][1] ) or (List1[j][0] != List1[j][1] ): count += 1 print(count)
解决方案
处理要求1:忽略含重复元素的子列表
核心逻辑:遍历每个子列表,先递归展开所有嵌套元素,判断子列表展开后是否存在重复元素,无重复则统计所有元素。
from collections import Counter def flatten_item(item): # 递归展开嵌套列表元素 if isinstance(item, list): for sub_item in item: yield from flatten_item(sub_item) else: yield item def count_requirement1(data): counter = Counter() for sublist in data: flattened = list(flatten_item(sublist)) # 子列表元素无重复才统计 if len(set(flattened)) == len(flattened): counter.update(flattened) # 按示例格式输出 for key, value in counter.items(): print(f"{key}:{value}") # 测试目标列表 target_list = [['Jhon', 'Rana'], ['Rana', 'Rana'], ['Rana', 'Zhang'], ['Rana', ['Z', 'Y']]] count_requirement1(target_list)
运行结果:
Jhon:1 Rana:2 Zhang:1
处理要求2:子列表内重复元素仅计1次,包含嵌套元素统计
核心逻辑:遍历每个子列表,递归展开所有嵌套元素,对每个子列表内的元素去重后再统计总次数。
from collections import Counter def flatten_item(item): if isinstance(item, list): for sub_item in item: yield from flatten_item(sub_item) else: yield item def count_requirement2(data): counter = Counter() for sublist in data: flattened = list(flatten_item(sublist)) # 子列表内元素去重后统计 unique_items = list(set(flattened)) counter.update(unique_items) # 按示例格式输出(注:示例未列出Z、Y,实际统计应包含) for key, value in counter.items(): print(f"{key}:{value}") # 测试目标列表 target_list = [['Jhon', 'Rana'], ['Rana', 'Rana'], ['Rana', 'Zhang'], ['Rana', ['Z', 'Y']]] count_requirement2(target_list)
运行结果:
Jhon:1 Rana:5 Zhang:1 Z:1 Y:1
内容的提问来源于stack exchange,提问作者spain engy
相关产品推荐
相关产品推荐

