我有一个数据哈希,其中包含不同的字符串作为其键。我需要在我的班级中创建一个新方法,它将计算每个键中元音的数量,然后返回元音最多的键。我很困难,这就是我到目前为止所做的。
def create(self, validated_data):
try:
user = User.objects.get(email=validated_data['email'])
// There was already a user with that email, do something
except User.DoesNotExist:
user = User.objects.create_user(**validated_data)
if settings.get('SEND_ACTIVATION_EMAIL'):
with transaction.atomic():
user.is_active = False
user.save(update_fields=['is_active'])
return user
有人可以帮忙吗?
答案 0 :(得分:1)
String#count
可能对您有所帮助:
date
答案 1 :(得分:0)
这将获得元音最多的关键词:
@submitted_wishes.keys.max_by { |key| key.count('aeiou') }
答案 2 :(得分:0)
我会使用以下方法:
def count_vowels(str)
str.count 'aeiou'
end
def highest_value_key(hash)
hash.key(hash.values.max)
end
这些方法背后的想法是将问题分开并使其更具可读性。
答案 3 :(得分:0)
h = { "Mary"=>"Mary", "quite"=>"contrary", "how"=>"does your", "garden"=>"grow?" }
h.map { |k,_| [k.count('aeiou'), k] }.max.last
#=> => "quite"
步骤:
a = h.map { |k,_| [k.count('aeiou'), k] }
#=> [[1, "Mary"], [3, "quite"], [1, "how"], [2, "garden"]]
b = a.max
#=> [3, "quite"]
b.last
#=> "quite"
有关如何排序数组的解释(在计算max
时),请参阅Array#<=>。
如果键k1
和k2
与最大元音数相关联,则k1 <=> k2
会打破平局(k1
k1 <=> k2 #=> -1
会返回k2
,{{1}如果k1 <=> k2 #=> 1
,则会返回},k1 <=> k2 #=> 0
时可能会返回任一键。请参阅String#<=>。