سؤال

أنا جديد إلى حد ما على Python وما زلت أواجه مشكلة في عرض البيانات التي لدي بالطريقة التي أريدها. لدي هذا الرمز الذي يحدد الحرف الأكثر شيوعًا في السلسلة. ومع ذلك ، كيف أقوم بطبعها على هذا النحو: ('A', 3).

stringToData = raw_input("Please enter your string: ")
import collections
print (collections.Counter(stringToData).most_common(1)[0])

أردت فقط بعض البصيرة حول كيفية معالجة هذا الرمز إلى شيء مشابه لهذا:

print "In your string, there are: %s vowels and %s consonants." % (vowels, cons)

من الواضح أنه سيقول ، "في السلسلة الخاصة بك ، الشخصية الأكثر شيوعًا هي (الحرف) ، والتي حدثت (رقم) مرات."

أنا أستخدم Python 2.7 ، وحاولت استخدام pprint لكنني لم أفهم حقًا كيفية دمج ذلك في الكود الحالي.

تحرير: في الأساس ، ما أطلبه هو كيف يمكنني أن أجد أن إيجاد الحرف الأكثر شيوعًا في سلسلة وطباعته بطريقة مثل "في السلسلة الخاصة بك ، الشخصية الأكثر شيوعًا هي (الحرف) ، والتي حدثت (رقم). "

هل كانت مفيدة؟

المحلول

لست متأكدًا مما إذا كان هذا هو ما تريده ، لكن هذا سيطبع الشخصية الأكثر شيوعًا المتبعة بعدد الحوادث:

import collections

char, num = collections.Counter(stringToData).most_common(1)[0]
print "In your string, the most frequent character is %s, which occurred %d times" % (char, num)

هذا يرجع إلى طرف أكثر تكرارًا وعدد الأحداث.

collections.Counter(stringToData).most_common(1)[0]
#output: for example: ('f', 5)

مثال:

stringToData = "aaa bbb ffffffff eeeee"
char, num = collections.Counter(stringToData).most_common(1)[0]
print "In your string, the most frequent character is %s, which occurred %d times" % (char, num)

الإخراج هو:

In your string, the most frequent character is f, which occurred 8 times

نصائح أخرى

لا يوجد شيء ل pprint للقيام هنا. تدور هذه الوحدة حول تخصيص طريقة طباعة المجموعات-تسيطر على كائنات فرعية ، والتحكم في الترتيب الذي يتم به عرض مفاتيح القاموس أو العناصر المحددة ، وما إلى ذلك ، أنت لا تحاول طباعة مجموعة على الإطلاق ، فقط طباعة بعض المعلومات عنها .

أول شيء تريد القيام به هو الحفاظ على المجموعة حولها بدلاً من إعادة بنائها لكل عبارة طباعة:

counter = collections.Counter(stringToData)

بعد ذلك ، عليك معرفة كيفية الحصول على البيانات التي تريدها. أنت تعرف بالفعل كيفية العثور على زوج واحد من القيم:

letter, count = counter.most_common(1)[0]

الشيء الآخر الذي سألت عنه هو عدد حروف العلة والحروف الساكنة. لذلك ، سترغب في فعل شيء مثل هذا:

all_vowel = set('aeiouyAEIOUY')
all_consonants = set(string.ascii_letters) - all_vowels
vowels = sum(count for letter, count in counter.iteritems()
             if letter in all_vowels)
cons = sum(count for letter, count in counter.iteritems()
           if letter in all_consonants)

والآن تحتاج فقط إلى طباعتها باستخدام نوع من التنسيق ، وهو ما تعرفه بالفعل كيفية القيام به:

print "In your string, there are: %s vowels and %s consonants." % (vowels, cons)
print ("In your string, the most frequent character is %s, which occurred %s times."
       % (letter, count))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top