【问题标题】:how to store dictionary items in a list如何将字典项存储在列表中
【发布时间】:2015-05-09 06:46:30
【问题描述】:

这个问题很难变成一个单行的问题,所以我必须解释一下。我试图检查给定的字符串以查看字符串中的内容是否在字典中具有内容,如果字典中的每个字母都存在这种情况,则将键存储在“Notes”列表中。但是你如何将它存储在列表中以及如何返回它,因为我一直没有得到任何回报,这就是我所拥有的:

def text2notes (s):
    s = s.lower()
    noteBook = { "e":30, "t":31, "a":32, "o": 33, "i": 34, "n" :35, "h": 36}
    Notes = []
    for NoteBook in s:
        if s in noteBook:
            Notes.append(noteBook[s])
    return Notes

请帮忙。

【问题讨论】:

  • 另外,除非 NoteBook 是一个类,否则我会避免大写。与笔记相同。这些都应该都是小写以符合 PEP8 标准
  • 如果s 是一个字符串,您将逐个字符地遍历它。但是,您正在测试整个字符串的成员资格。应该是if NoteBook in noteBook...这表明你也需要更好的名字。
  • 现在解决了吗?我们可以这样标记吗?

标签: python string list dictionary store


【解决方案1】:

试试这个:

for character in s:
    if character in noteBook:
        Notes.append(noteBook[character])

另外,请确保 return Notes 在 for 循环之外。

【讨论】:

  • 很好,但是如果 character 不在字典中,这将返回 KeyError。最好改成noteBook.get(character)
  • 上一行刚刚验证character在字典中
【解决方案2】:

检查一下:

def text2notes(s):
  s = s.lower()
  noteBook = {"e": 30, "t": 31, "a": 32, "o": 33, "i": 34, "n": 35, "h": 36}
  Notes = []
  for NoteBook in s:
    print NoteBook
    if NoteBook in noteBook:
      Notes.append(noteBook[NoteBook])

  return Notes

在循环中检查 NoteBok 而不是 s

【讨论】:

    【解决方案3】:

    您可以将支票转换为布尔值,然后进行条件语句:

        def text2notes(s):
          s = s.lower()
          noteBook = {"e": 30, "t": 31, "a": 32, "o": 33, "i": 34, "n": 35, "h": 36}
          Notes = []
          Note = (notebook in s)
          print Note
          if Note is True:
             Notes.append(noteBook[NoteBook])
    
          return Notes
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2021-04-06
      • 2021-04-13
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多