【问题标题】:How to save words as dictionary keys with arbitrary integer values?如何将单词保存为具有任意整数值的字典键?
【发布时间】:2020-10-26 15:29:29
【问题描述】:

在对单词进行标记后,我试图弄清楚如何将它们保存为字典中的键并分配任意整数值。

尝试

import sys 
import re  
    
filename = sys.argv[1]
        
infile = open(filename, 'r')
    
for line in infile:    
    allwords = line.split()

    for word in allwords:
        word = word.rstrip('.:;!,"?)_')
        book = {word.lower()}   

print(book)

【问题讨论】:

  • 将它们保留为 dict 有什么意义?你会扔掉重复的。

标签: python dictionary for-loop tokenize


【解决方案1】:

我不确定我是否理解问题的逻辑,所以我提供了另外 2 个选项:

随机导入 表单集合导入计数器

words_test = ['hello', 'world', 'goodbye', 'tomorrow','jack','jack']

选项 1 - Christopher Peisert

book = {word: random.randint(0, 1000) for word in words_test}

选项 2 - 使用集合 - 将删除重复项

words_set = set(words_test)

选项 3 - 使用计数器。见

# https://docs.python.org/3.8/library/collections.html#collections.Counter

counter = Counter(words_test)

【讨论】:

    【解决方案2】:
    book = {word.lower()}
    

    这是创建一组单项,而不是字典。

    在循环之前创建字典。然后使用符号dict_name[key]=value 设置值来设置键值对:

    import sys 
    import re
    import random
    
    filename = sys.argv[1]
        
    infile = open(filename, 'r')
    
    book = {}
    
    for line in infile:
        allwords = line.split()
    
        for word in allwords:
            word = word.rstrip('.:;!,"?)_')
            book[word.lower()] = random.randint(0,1000)
    
    print(book)
    

    【讨论】:

      【解决方案3】:

      随机值的字典理解

      一种解决方案是使用字典推导并分配随机整数值。

      import random
      
      words_test = ['hello', 'world', 'goodbye', 'tomorrow']
      book = {word: random.randint(0, 1000) for word in words_test}
      
      print(book)
      

      输出

      {'hello': 318, 'world': 576, 'goodbye': 699, 'tomorrow': 847}
      

      使用dict.fromkeys() 的相同整数值

      如果整数值不需要是随机的,你也可以使用:

      words_test = ['hello', 'world', 'goodbye', 'tomorrow']
      book = dict.fromkeys(words_test, 1)
      
      print(book)
      

      输出

      {'hello': 1, 'world': 1, 'goodbye': 1, 'tomorrow': 1}
      

      每次迭代添加一个键值对的循环

      words_test = ['hello', 'world', 'goodbye', 'tomorrow']
      
      book = dict()
      for word in words_test:
          book[word] = 1
      
      print(book)
      

      输出

      {'hello': 1, 'world': 1, 'goodbye': 1, 'tomorrow': 1}
      

      【讨论】:

      • 我们喜欢这种尝试!问题是,我们不能使用随机词,而且单词是多少,所以我们不能手动创建字典。不过,我们已经对这本书进行了标记,只需将所有这些单词添加到 dict 并分配一个整数作为值。感谢您的帮助!
      • @LonelyRanger05 查看带有两个附加选项的更新答案。我不确定为什么创建字典时单词的数量很重要。或许你可以澄清一下?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      相关资源
      最近更新 更多