首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >唯一单词字典及其在文件中的位置

唯一单词字典及其在文件中的位置
EN

Stack Overflow用户
提问于 2018-09-16 15:22:15
回答 1查看 40关注 0票数 0

我正试图建立一个单词的“数据库”及其相应的tweet标识符。

我猜字典是做这件事的最佳选择。

标识符、用户、文本、单词在选项卡上被分割。

代码语言:javascript
运行
复制
Example of input : 
1035421931321864192 SchipholWatch   RT @vinvanoort: Zo, ik heb getekend  Genoeg #geschiphol, hoogste tijd voor een eerlijk en duurzaam #luchtvaartbeleid    RT @vinvanoort : Zo , ik heb getekend  Genoeg #geschiphol , hoogste tijd voor een eerlijk en duurzaam #luchtvaartbeleid

1035421930541772800 ev4uam2 RT @AfshinEllian1: Kennelijk vinden ze daar aan die gezellige tafel normaal dat steltje barbaren onze grondwettelijke rechten bedreigen. Zouden we ook voor andere buitenwettelijke dreigingen moeten capituleren? Wat een door ons gesubsidieerde domheid! #laatop1 #cartoonwedstrijd  RT @AfshinEllian1 : Kennelijk vinden ze daar aan die gezellige tafel normaal dat steltje barbaren onze grondwettelijke rechten bedreigen . Zouden we ook voor andere buitenwettelijke dreigingen moeten capituleren ? Wat een door ons gesubsidieerde domheid ! #laatop1 #cartoonwedstrijd

Example of desired output:
{'exampleword' : ['1035421930541772800', '1235424930545772800']}

当前代码:

代码语言:javascript
运行
复制
def main():
    olist = []
    worddict = {}
    for line in sys.stdin:
        i,u,t,w = line.split('\t')
        splitword = w.split()
        olist.extend(splitword)


    for num,name in enumerate(olist):
        print("{} [{}]".format(name.strip(), num))

main()

到目前为止,我已经尝试过迭代这些行,并在字典中添加拆分词+i(这是tweet标识符),但没有成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-16 15:37:24

基本上,您想要的是将带有list值的字典“反转”到另一个具有list值的字典。

我从实际的推特数据中抽象出来,因为这会混淆实际问题的答案。

贪婪的实现可能是:

代码语言:javascript
运行
复制
import collections

def reverse_dict(input):
    output = collections.defaultdict(list)

    for key, val in input.items():
        for item in val:
            output[item].append(key)

    return output


def main():
    input = {
        'u123': ['hello', 'world'],
        'u456': ['hello', 'you'],
        'u789': ['you', 'world'],
    }

    output = reverse_dict(input)

    print output


if __name__ == '__main__':
    main()

正如@Michael所说,您的问题的预期输出不是有效的Python字典。上述代码将输出:

代码语言:javascript
运行
复制
{'world': ['u789', 'u123'], 'you': ['u789', 'u456'], 'hello': ['u456', 'u123']}

此外,正如奥斯汀回答的那样,用“蛮力”来解决这个问题并不一定是最好的解决办法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52355566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档