Python word cloud - TypeError: expected string

Python word cloud - TypeError: expected string

我正在尝试从元组列表创建词云,每个元组的频率值如下。

类型(subdict)显示为dict。

我创建词云的代码如下:

from wordcloud import WordCloud
import random
def grey_color(word, font_size, position, orientation, random_state=None, **kwargs):
    return 'hsl(0, 0%%, %d%%)' % random.randint(50, 100)
wordcloud = WordCloud(width= 800, height = 400, relative_scaling = 1).generate_from_frequencies(subdict)
plt.figure(figsize=(20,10))
plt.imshow(wordcloud.recolor(color_func=grey_color, random_state=3))
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

但我收到错误:TypeError: expected string pointing at the WordCloud()

当我每个频率有一个单词时它可以工作,但为什么当我有这种类型的字典时它不起作用?

更新问题:

当我按照答案中的建议将列表转换为 str 时,我得到的字典如下:

所有单词的频率都是 1。这有什么原因吗?

generate_from_frequencies() 需要以 str 为键的字典,您提供的是元组。你需要转换它

subdict = {z: y for x, y in freq_dist.items() for z in x}