将字符串添加到字典中的所有键(Python)

Posted

技术标签:

【中文标题】将字符串添加到字典中的所有键(Python)【英文标题】:Adding a string to all keys in dictionary (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, ...

【问题讨论】:

【参考方案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 如下所示

【讨论】:

以上是关于将字符串添加到字典中的所有键(Python)的主要内容,如果未能解决你的问题,请参考以下文章

python字典操作函数

如何将多个值添加到python中的字典键? [关闭]

将字符串键转换为字典中的 int

将字符串添加到 python 列表的每个元素

如何将 XML 属性值添加到包含对象的字典中

在 C# 中的字典 <int, string> 中添加所有键