gpt4 book ai didi

python - 添加键值对时字典的程序优化和工作

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:50 24 4
gpt4 key购买 nike

这是我计算元音数量的程序

'''Program to count number of vowels'''
str=input("Enter a string\n")
a=0
e=0
i=0
o=0
u=0
for x in str:
if x=='a':
a=a+1
continue
if x=='e':
e=e+1
continue
if x=='i':
i=i+1
continue
if x=='o':
o=o+1
continue
if x=='u':
u=u+1
continue
count={}
if a>0:
count['a']=a
if e>0:
count['e']=e
if i>0:
count['i']=i
if o>0:
count['o']=o
if u>0:
count['u']=u
print(count)

如何改进用于比较的初始循环以及填充字典的过程。

多次运行该程序时,我获得了以下输出:

>>> 
Enter a string
abcdefgh
{'e': 1, 'a': 1}
>>> ================================ RESTART ================================
>>>
Enter a string
abcdefghijklmnopqrstuvwxyz
{'u': 1, 'a': 1, 'o': 1, 'e': 1, 'i': 1}
>>> ================================ RESTART ================================
>>>
Enter a string
abcdeabcdeiopiop
{'a': 2, 'o': 2, 'i': 2, 'e': 2}

从这里我无法弄清楚添加到字典中的键值对到底有多少违背了我的预期:

Case 1:
{'a':1, 'e':1}
Case 2:
{'a':1, 'e':1, 'i':1, 'o':1, 'u':1}
Case 3:
{'a':2, 'e':2, 'i':2, 'o':2}

感谢任何帮助。

最佳答案

>>> import collections
>>> s = "aacbed"
>>> count = collections.Counter(c for c in s if c in "aeiou")
>>> count
Counter({'a': 2, 'e': 1})

或者 - 如果您确实需要维护插入顺序:

>>> s = 'debcaa'
>>> count=collections.OrderedDict((c, s.count(c)) for c in s if c in "aeiou")
>>> count
OrderedDict([('e', 1), ('a', 2)])

最后,如果你想要字典顺序,你可以将你的 dict/counter/OrderedDict 变成一个元组列表:

>>> sorted(count.items())
[('a', 2), ('e', 1)]

如果你想要一个字典顺序的 OrderedDict:

>>> sorted_count = collections.OrderedDict(sorted(count.items()))
>>> sorted_count
OrderedDict([('a', 2), ('e', 1)])

关于python - 添加键值对时字典的程序优化和工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20759829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com