单字词典及其在词典中的地位

2024-10-03 21:26:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想字典是最好的选择

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

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']}

当前代码:

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()

到目前为止,我已经尝试过遍历这些行并将splitword+i(tweet标识符)添加到字典中,但没有成功


Tags: of字典example标识符单词iktweetrt
1条回答
网友
1楼 · 发布于 2024-10-03 21:26:59

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

我从实际的tweet数据中提取,因为这会混淆实际问题的答案

贪婪的实现可以是:

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 Butscher所说,您的问题的预期输出不是有效的Python字典。上述代码将输出:

{'world': ['u789', 'u123'], 'you': ['u789', 'u456'], 'hello': ['u456', 'u123']}

此外,正如@Austin所回答的,使用“暴力”来解决这个问题不一定是最好的解决方案

相关问题 更多 >