【问题标题】:Using the 'for loop' - if there are duplicate words on user input, only the first duplicate word shows. How can I display all duplicate words?使用“for 循环” - 如果用户输入中有重复的单词,则只显示第一个重复的单词。如何显示所有重复的单词?
【发布时间】:2019-07-10 03:39:52
【问题描述】:

我正在根据用户输入进行每字字符计数器。

但是,如果输入中有重复的单词(类似情况),我的代码只会输出第一个单词(不包括重复的单词)。

我为此使用了 split、len 和 for 循环。

sentence = input("Enter a sentence: ")
splitting = sentence.split()

final = {x:len(x) for x in splitting}
print(final)
  • 示例输入:新手机提醒!您的新手机将于下周上市。

  • 预期输出:{'New': 3, 'phone': 5, 'alert!': 6, 'Your': 4, 'new': 3, 'phone': 5, 'will' : 4, '是': 2 ...}

  • 实际输出:{'New': 3, 'phone': 5, 'alert!': 6, 'Your': 4, 'new': 3, 'will': 4, 'be' : 2 ...}

它同时显示“新”和“新”,因为它们的大小写不匹配。但是,“电话”只显示一次。

【问题讨论】:

  • 字典不能有重复的键。你不会使用字典得到你想要的输出。
  • 在“for z in split”中将z改为x,否则报错
  • 正如@SandeepKadapa 指出的那样。字典中不能有重复的键。告诉我们你想达到什么目标,你是想获得字数还是字符数?
  • 对不起,变量上的错字。我在 for 循环中将 z 更改为 x 。我正在尝试字符数。我是 Python 新手,所以我还在想办法。
  • 除非你想实现自己的方法,这可以通过collections.Counter来完成。

标签: python python-3.x string list split


【解决方案1】:

您可以在列表列表中获取该单词中的单词、characterCount。

listOfList = [[x , len(x)] for x in splitting]
print(listOfList)

输出:

 [['New', 3], ['phone', 5], ['alert!', 6], ['Your', 4], ['new', 3], ['phone', 5], ['will', 4], ['be', 2], ['available', 9], ['next', 4], ['week.', 5]]

【讨论】:

    猜你喜欢
    • 2017-07-15
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2015-05-23
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多