在字典中为所有键添加一个字符串(Python)

23
我对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。
我应该如何将"@d1"添加到字典的所有键中?
基本上,我的字典的形式是:
{'word1': 1, 'word2': 1, 'word3': 2, ....}

我希望它是这样的:
{'word1@d1': 1, 'word2@d1': 1, 'word3@d1': 2, ...}
3个回答

39

尝试使用字典推导式

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

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

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

4
您可以使用 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}

1
我有一个类似下面的字典列表: {{link1:enter image description here}}。
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如下所示 {{link1:在此输入图片描述}}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接