【问题标题】:Is there a way to speed up this for in python?有没有办法在python中加快这个速度?
【发布时间】:2020-07-16 14:30:49
【问题描述】:

有没有办法在 python 中加快这段代码的速度?我需要使用超过 500k 的字符串来运行它,而且耗时太长。

每个单词都需要放入匹配的字典中。

  • example_sent_words = 500k 字符串列表

  • EmojiPos = 表情符号列表

  • EmojiNeg = 表情符号列表

  • OthersEmoji = 表情符号列表

emoji_pos=dict()
emoji_neg=dict()
emoji_others=dict()

for w in example_sent_words:
            if w in s_EmojiPos:
                remove_username_url.remove(w)
                if w in emoji_pos:
                    emoji_pos[w] += 1
                else:
                    emoji_pos[w] = 1
            elif w in s_EmojiNeg:
                remove_username_url.remove(w)
                if w in emoji_neg:
                    emoji_neg[w] += 1
                else:
                    emoji_neg[w] = 1
            elif w in s_OthersEmoji:
                remove_username_url.remove(w)
                if w in emoji_others:
                    emoji_others[w] += 1
                else:
                    emoji_others[w] = 1

编辑:我按照建议写了这个:

s_AdditionalEmoji = set(AdditionalEmoji)
s_EmojiNeg = set(EmojiNeg)
s_EmojiPos = set(EmojiPos)

【问题讨论】:

  • 将 EmojiPos、EmojNeg 和 OthersEmoji 制作成集合,而不是列表。测试项目是否存在于集合而不是列表中要快得多。
  • 继续阅读Tutorial - 5.4. Sets
  • 感谢您的帮助!不幸的是,处理时间仍然相同

标签: python python-3.x loops for-loop


【解决方案1】:

为了减少内存使用并加快检查速度以及确保检查每个单词,我建议:

    word_count = len(example_sent_words)
    for i in range(word_count) :
        w = example_sent_words[0]
        if w in EmojiPos:
            example_sent_words.pop(0)
            try:
                emoji_pos[w] += 1
            except:
                emoji_pos[w] = 1
        elif w in EmojiNeg:
            example_sent_words.pop(0)
            try:
                emoji_neg[w] += 1
            except:
                emoji_neg[w] = 1
        elif w in OthersEmoji:
            example_sent_words.pop(0)
            try:
                emoji_others[w] += 1
            except:
                emoji_others[w] = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2022-01-28
    • 1970-01-01
    相关资源
    最近更新 更多