Подсчет повторенных символов в строке в Python

Я сделал это, когда форма отправки откроется в модальном диалоговом окне и после этого отправит всю запись в полях. Если вы нажмете кнопку «Отправить», запись будет сделана в базе данных, и страница сразу же будет перенаправлена ​​на ту же страницу с новыми данными. Нет необходимости обновлять, чтобы увидеть последние введенные данные. Надеюсь, это поможет.

<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">ADD CONTENT</button>
<!-- Modal -->
  <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
          <h4 class="modal-title" id="myModalLabel">Please Add Content</h4>
        </div>
      <div class="modal-body">
        <form role="form" action="" method="POST">
          <!-- YOUR HTML FORM GOES HERE--->
        <button type="submit" name="submit" class="btn btn-primary btn-lg"id="sub" onclick="SUBMISSION()" >Submit </button>
        </fieldset>
        </form>
<?php
  if(isset(

Я сделал это, когда форма отправки откроется в модальном диалоговом окне и после этого отправит всю запись в полях. Если вы нажмете кнопку «Отправить», запись будет сделана в базе данных, и страница сразу же будет перенаправлена ​​на ту же страницу с новыми данными. Нет необходимости обновлять, чтобы увидеть последние введенные данные. Надеюсь, это поможет.

[110]

POST['submit'])) { SUBMISSION(); } function SUBMISSION() { // UR CONNECTION ESTABLISHMENT CODE GOES HERE // SQL QUERY FOR INSERTION IN FIELDS echo"<script type=\"text/javascript\"> document.location.href='http://localhost/dict/pages/YOURPAGE.php'; </script>"; $conn->CLOSE(); } ?> </div> </div> <!-- /.modal-content --> </div> <!-- /.modal-dialog --> <!-- /.panel-body --> </div> <!-- /.panel --> </div> <!-- /.col-lg-12 -->

42
задан Community 23 May 2017 в 10:30
поделиться

7 ответов

Моя первая идея заключалась в следующем:

chars = "abcdefghijklmnopqrstuvwxyz"
check_string = "i am checking this string to see how many times each character appears"

for char in chars:
  count = check_string.count(char)
  if count > 1:
    print char, count

Это плохая идея, тем не мение! Это будет сканировать строку 26 раз, поэтому вы потенциально собираетесь выполнить в 26 раз больше работы, чем некоторые другие ответы. Вам действительно следует сделать это:

count = {}
for s in check_string:
  if count.has_key(s):
    count[s] += 1
  else:
    count[s] = 1

for key in count:
  if count[key] > 1:
    print key, count[key]

Это гарантирует, что вы пройдете строку только один раз, а не 26 раз.

Кроме того, ответ Алекс великолепен - я не был знаком с модулем коллекций. Я буду использовать это в будущем. Его ответ более краток, чем мой, и технически лучше. Я рекомендую использовать его код вместо моего.

34
ответ дан 26 November 2019 в 23:12
поделиться
import collections

d = collections.defaultdict(int)
for c in thestring:
    d[c] += 1

A collections.defaultdict похож на dict (фактически подклассифицирует его), но когда запись ищется и не обнаруживается, вместо того, чтобы сообщить, что у него его нет, он создает и вставляет его, вызывая предоставленный вызываемый 0-аргумент. Наиболее популярны defaultdict (int) для подсчета (или, что то же самое, для создания структуры данных пакета AKA с мультимножеством) и defaultdict (list) , который навсегда избавляет от необходимости использовать .setdefault (akey, []). append (avalue) и подобные неудобные идиомы.

Итак, как только вы это сделаете, d станет сопоставлением контейнера, похожим на dict каждый символ до количества раз, которое он появляется, и, конечно, вы можете испустить его как хотите. Например, сначала самый популярный персонаж:

for c in sorted(d, key=d.get, reverse=True):
  print '%s %6d' % (c, d[c])
111
ответ дан 26 November 2019 в 23:12
поделиться

Python 2.7+ включает в себя collections.Counter класс:

import collections
results = collections.Counter(the_string)
print(results)
34
ответ дан 26 November 2019 в 23:12
поделиться

Это самый короткий и наиболее практичный вариант, который я могу придумать без импорта дополнительных модулей.

text = "hello cruel world. This is a sample text"
d = dict.fromkeys(text, 0)
for c in text: d[c] += 1

print d ['a'] выведет 2

И это также быстро.

13
ответ дан 26 November 2019 в 23:12
поделиться

Я могу сосчитать количество дней, в течение которых я знаю Python двумя руками, так что простите меня, если я отвечу на что-нибудь глупое :)

Вместо того, чтобы использовать диктовку, я подумал почему бы не использовать список? Я не уверен, как списки и словари реализованы в Python, поэтому это нужно будет измерить, чтобы узнать, что быстрее.

Если бы это был C ++, я бы просто использовал обычный c-массив / вектор для доступа с постоянным временем (это определенно было бы быстрее), но я не знаю, какой соответствующий тип данных находится в Python (если он есть ...) :

count = [0 for i in range(26)]

for c in ''.join(s.lower().split()): # get rid of whitespaces and capital letters
    count[ord(c) - 97] += 1          # ord('a') == 97

Также можно задать размер списка ord ('z'), а затем избавиться от вычитания 97 везде, но если вы оптимизируете, почему не полностью :)

РЕДАКТИРОВАТЬ: Один из комментаторов предположил, что объединение / разделение не стоит возможного выигрыша от использования списка, поэтому я подумал, почему бы не избавиться от него:

count = [0 for i in range(26)]

for c in s:
    if c.isalpha(): count[ord(c.lower()) - 97] += 1
2
ответ дан 26 November 2019 в 23:12
поделиться

Вы можете использовать словарь:

s = "asldaksldkalskdla"
dict = {}
for letter in s:
 if letter not in dict.keys():
  dict[letter] = 1
 else:
  dict[letter] += 1

print dict
2
ответ дан 26 November 2019 в 23:12
поделиться

You want to use a dict.

#!/usr/bin/env python

input = "this is a string"

d = {}

for c in input:
    try:
        d[c] += 1
    except:
        d[c] = 1

for k in d.keys():
    print "%s: %d" % (k, d[k])
3
ответ дан 26 November 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: