python - python map减少具有完全相同元音的单词
问题描述
我正在尝试查找和计算具有相同元音组合的单词。每行的元音按字母顺序排列,后跟一个冒号,然后是恰好包含这些元音的单词数。如果有没有元音的单词,则冒号前不打印任何内容。所以我的映射器输出是这样的:
我的输出应该是这样的 - :2 eo:2 eeo:1 eoo: 1 但我得到的是 eo 2 eoo 2。所以我错过了空格和 eeo。这是我的代码:
import sys
current_key_being_processed = None
next_key_found = None
vowel_total = 0
vowel_dict = {}
for line in sys.stdin:
next_key_found, value = line.split('\t')
next_key_found = sorted(next_key_found)
next_key_found = ''.join(next_key_found)
if current_key_being_processed == next_key_found:
vowel_total = vowel_total + int(1)
if current_key_being_processed != next_key_found:
vowel_total = 0
if next_key_found is not None:
current_key_being_processed = next_key_found
vowel_total = vowel_total + int(1)
else:
if current_key_being_processed:
current_key_being_processed = ''.join(sorted(current_key_being_processed))
vowel_dict[current_key_being_processed] = vowel_total
vowel_total = 0
current_key_being_processed = next_key_found
if current_key_being_processed == next_key_found:
vowel_total = vowel_total + int(1)
vowel_dict[current_key_being_processed] = vowel_total
for key in sorted(vowel_dict.keys()):
print('final dict =',key, vowel_dict[key])
解决方案
不确定我是否正确遵循。这是你想要的?
words = [' 1',' 1','eoe 1','oe 1','oe 1','ooe 1']
vowels = {}
for word in words:
key = ''.join(sorted(c for c in word.strip(' 1') if c in 'aeiouy'))
vowels[key] = vowels.get(key,0) + 1
print(vowels)
推荐阅读
- proguard - 如何配置 Proguard 以便在没有代码优化的情况下进行混淆?
- c# - 如何使用目标视图模型中收集的数据从目标视图模型返回到源视图模型并在源视图模型中调用方法
- r - 使用 R 检查多个列中的值是否等于列表中的任何元素
- python - Python POST 请求显示“不可接受!”
- ruby-on-rails - 将多个数组 + 变量组合成单个 JSON 对象
- sql - 更新 SQL 中的多个值
- java - Java - 递归双阶乘算法
- azure - 标准连接器转向高级连接器。逻辑应用程序是否也受到影响
- file - 请求正文中的动态文件
- sql - How to send a query request to SQL Server via tcp ip (with a general tool, such as Packet Sender) on the same PC?