【问题标题】:Adding a string to all keys in dictionary (Python)将字符串添加到字典中的所有键(Python)
【发布时间】:2018-07-18 19:05:41
【问题描述】:

我是 Python 和 Pyspark 的新手,我正在练习 TF-IDF。 我从 txt 文件中的句子中拆分了所有单词,删除了标点符号,删除了停用词列表中的单词,并使用以下代码将它们保存为字典。

x = text_file.flatmap(lambda line: str_clean(line).split()    
x = x.filter(lambda word: word not in stopwords    
x = x.reduceByKey(lambda a,b: a+b)    
x = x.collectAsMap()

我有 10 个不同的 txt 文件用于同一进程。我想在字典中的键中添加一个类似"@d1" 的字符串,这样我就可以指出该键来自文档 1。

如何将"@1" 添加到字典中的所有键中?

基本上我的字典是这样的:

{'word1': 1, 'word2': 1, 'word3': 2, ....}

我希望它是:

{'word1@d1': 1, 'word2@d1': 1, 'word3@d1': 2, ...}

【问题讨论】:

    标签: python string dictionary


    【解决方案1】:

    试试dictionary comprehension

    {k+'@d1': v for k, v in d.items()}
    

    在 Python 3.6+ 中,您可以使用 f-strings:

    {f'{k}@d1': v for k, v in d.items()}
    

    【讨论】:

      【解决方案2】:

      您可以使用dict 构造函数来重建字典,将文件编号附加到每个键的末尾:

      >>> d = {'a': 1, 'b': 2}
      >>> file_number = 1
      >>> dict(("{}@{}".format(k,file_number),v) for k,v in d.items())
      >>> {'a@1': 1, 'b@1': 2}
      

      【讨论】:

        【解决方案3】:

        我有一个如下所示的 dict 列表

        def prefix_key_dict(prefix,test_dict):
           res = {prefix + str(key).lower(): val for key, val in test_dict.items()}
           return res
        
        temp_prefix = 'column_'
        transformed_dict = [prefix_dict(temp_prefix,each) for each in table_col_list]
        

        转换后的 json 如下所示

        【讨论】:

          猜你喜欢
          • 2022-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-20
          • 2020-04-12
          • 2015-02-01
          • 2013-10-11
          • 1970-01-01
          相关资源
          最近更新 更多