【问题标题】:Iterate Over a List of Strings by Character in Python在 Python 中按字符迭代字符串列表
【发布时间】:2021-03-15 17:11:19
【问题描述】:
Phone Number = "3662277815781519518916891"
Words = ["foo", "bar", "baz", "foobar", "emo", "cap", "car", "cat"]
foo -> 366

所以在这个问题中,我得到了一个字符串形式的电话号码和一个单词列表。每个字母对应一个数字,就像它出现在电话的拨号屏幕上一样。 (例如:2 -> abc、3 -> def 等...)基本上我需要找出我们给定的电话号码中是否存在每个单词。所以我的逻辑是使用字典,将电话拨号屏幕上的字母及其配对数字分别作为我的键值对。然后我想将我们单词列表中的每个单词转换为它的数字代表。例如,foo -> 366。最后我想做一个简单的检查,看看每个单词是否在我们的电话号码字符串中;如果是返回true,如果不是返回false。我认为我的逻辑相当简单,但我的实现似乎完全错误。

所以在我的代码中,我试图遍历列表中每个单词的每个字母,然后将该字母转换为其字典中的值对。这样做的最佳方法是什么?

def phone(num, words):

    conversions = {"abc": 2, "def": 3, "ghi": 4, "jkl": 5, "mno": 6, "pqrs": 7, "tuv": 8, "wxyz": 9}

    for word in words:
        for letter in word:
            conversions.get(letter)
            #letter += 1
    print (words)

编辑:num 是给我们的电话号码字符串,words 是他们给我们的单词列表(也表示为字符串)

【问题讨论】:

  • 你传递给函数phone (num, words)中的参数words什么?
  • 刚刚编辑了帖子以反映,但 num 是我们的电话号码字符串,words 是给我们的以字符串表示的单词列表。

标签: python list dictionary


【解决方案1】:

保持简单。字典应该采用单个字母并将其转换为数字。

{'a':'2', 'b':'2', 'c':'2', 'd':'3', ...}

【讨论】:

  • 我想我可能需要这样做,这是最好的实现方式吗?
  • 这是我所知道的最好的方式。有时人们会想出比我想象的更好的解决方案。当然,这只是解决方案的一部分,您现在可能已经完成了。
猜你喜欢
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 2021-04-14
  • 2011-05-01
  • 2012-05-28
相关资源
最近更新 更多