我有这些 list :
{'HH1': ['x'], 'HH2': ['y', 'x'], 'HH3': ['x', 'z'], 'HH4': ['x'], 'HH5': ['x'], 'HH6': ['x'], 'HH7': ['x'], 'HH8': ['x', 'y', 'z'], 'HH9': ['x'], 'HH10': ['x', 'y'], 'HH11': ['x'], 'HH12': ['x'], 'HH13': ['x'], 'HH14': ['x'], 'HH15': ['x', 'y'], 'HH16': ['x', 'y'], 'HH17': ['x', 'y'], 'HH18': ['x']}
我想通过它们来:
- 计算相似组合的数量(i)
- 用每个组合创建一个新列表,名为:n = i
输出应为:
n=11: ('x')
n=5: ('x', 'y')
n=1: ('x', 'z')
n=1: ('x', 'y', 'z')
我好像做不对.
* * 1. * * 我试过这个,但它跳过了一个组合
(n=1: ('x', 'z'))
.
从Collection 导入计数器
从itertools导入组合
# Counting occurrences of each combination of fuel types
combination_count = Counter()
unique_combinations = set()
for fuel_list in hfuels.values():
for r in range(1, len(fuel_list) + 1):
for combination in combinations(fuel_list, r):
unique_combinations.add(tuple(sorted(combination)))
# Creating new lists for each combination
renamed_lists = {}
for combination in unique_combinations:
count = sum(1 for fuel_list in hfuels.values() if set(combination) == set(fuel_list))
if count:
renamed_lists[f"n={count}"] = list(combination)
# Printing the renamed lists
for name, fuel_list in renamed_lists.items():
print(f"{name}: {fuel_list}")
**Outcome:**
n=1: \['z', 'y', 'x'\]
n=5: \['y', 'x'\]
n=11: \['x'\]
* * 2. * * 我也试过这个方法,但它计算的是发生而不是组合.
从Collection 导入计数器 从itertools导入组合
# Counting occurrences of each combination of fuel types
combination_count = Counter()
unique_combinations = set()
for fuel_list in hfuels.values():
for r in range(1, len(fuel_list) + 1):
for combination in combinations(fuel_list, r):
combination_count[tuple(sorted(combination))] += 1
unique_combinations.add(tuple(sorted(combination)))
# Creating new lists for each combination
renamed_lists = {}
for combination in unique_combinations:
count = combination_count[combination]
if count:
renamed_lists[f"n={count}"] = list(combination)
# Printing the renamed lists
for name, fuel_list in renamed_lists.items():
print(f"{name}: {fuel_list}")
Outcome:
n=1: \['z', 'y', 'x'\]
n=2: \['z'\]
n=6: \['y'\]
n=18: \['x'\]