第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用先前字典中的鍵和值創(chuàng)建字典?

如何使用先前字典中的鍵和值創(chuàng)建字典?

明月笑刀無情 2021-09-02 15:39:51
我需要創(chuàng)建一個字典,其鍵是來自先前創(chuàng)建的字典的值。我以前的字典是:{100000: (400, 'Does not want to build a %SnowMan %StopAsking', ['SnowMan', 'StopAsking'], [100, 200, 300], [400, 500]), 100001: (200, 'Make the ocean great again.', [''], [], [400]), 100002: (500, "Help I'm being held captive by a beast!  %OhNoes", ['OhNoes'], [400], [100, 200, 300]), 100003: (500, "Actually nm. This isn't so bad lolz :P %StockholmeSyndrome", ['StockholmeSyndrome'], [400, 100], []), 100004: (300, 'If some random dude offers to %ShowYouTheWorld do yourself a favour and %JustSayNo.', ['ShowYouTheWorld', 'JustSayNo'], [500, 200], [400]), 100005: (400, 'LOLZ BELLE.  %StockholmeSyndrome  %SnowMan', ['StockholmeSyndrome', 'SnowMan'], [], [200, 300, 100, 500])}這個字典的形式是 {key: (id, string, tags, likes, dislikes)} 我需要創(chuàng)建一個字典,它的鍵是第一個字典中的標(biāo)簽,它的值是包含標(biāo)簽,以字典的形式呈現(xiàn)。例如,如果我們使用 tag 'SnowMan',新字典應(yīng)該是這樣的:{'SnowMan': {400: ['Does not want to build a %SnowMan %StopAsking', 'LOLZ BELLE.  %StockholmeSyndrome  %SnowMan']}}或者,如果我們使用 tag 'StockholmeSyndrome',新字典應(yīng)該是這樣的:{'StockholmeSyndrome': {        500: ["Actually nm. This isn't so bad lolz :P %StockholmeSyndrome"],         400: ['LOLZ BELLE.  %StockholmeSyndrome  %SnowMan']}}最后,新字典需要將之前字典中的所有標(biāo)簽都包含為鍵,包括沒有標(biāo)簽的事件。我真的被困在這個問題上,有人可以提供一些指導(dǎo)嗎?
查看完整描述

3 回答

?
冉冉說

TA貢獻(xiàn)1877條經(jīng)驗 獲得超1個贊

使用collections.defualtdict您可以迭代并附加到嵌套字典結(jié)構(gòu)中的列表:


from collections import defaultdict


dd = defaultdict(lambda: defaultdict(list))

for id_, text, tags, likes, dislikes in d.values():

    for tag in tags:

        dd[tag][id_].append(text)


print(dd)


defaultdict(<function __main__.<lambda>>,

            {'': defaultdict(list, {200: ['Make the ocean great again.']}),

             'JustSayNo': defaultdict(list,

                         {300: ['If some random dude offers to %ShowYouTheWorld do yourself a favour and %JustSayNo.']}),

             'OhNoes': defaultdict(list,

                         {500: ["Help I'm being held captive by a beast!  %OhNoes"]}),

             'ShowYouTheWorld': defaultdict(list,

                         {300: ['If some random dude offers to %ShowYouTheWorld do yourself a favour and %JustSayNo.']}),

             'SnowMan': defaultdict(list,

                         {400: ['Does not want to build a %SnowMan %StopAsking',

                           'LOLZ BELLE.  %StockholmeSyndrome  %SnowMan']}),

             'StockholmeSyndrome': defaultdict(list,

                         {400: ['LOLZ BELLE.  %StockholmeSyndrome  %SnowMan'],

                          500: ["Actually nm. This isn't so bad lolz :P %StockholmeSyndrome"]}),

             'StopAsking': defaultdict(list,

                         {400: ['Does not want to build a %SnowMan %StopAsking']})})

defaultdict是 的子類dict,因此您通常不需要進(jìn)一步操作。但是,如果您需要常規(guī)dict對象,則可以使用遞歸函數(shù):


def default_to_regular_dict(d):

    """Convert nested defaultdict to regular dict of dicts."""

    if isinstance(d, defaultdict):

        d = {k: default_to_regular_dict(v) for k, v in d.items()}

    return d


res = default_to_regular_dict(dd)


print(res)


{'': {200: ['Make the ocean great again.']},

 'JustSayNo': {300: ['If some random dude offers to %ShowYouTheWorld do yourself a favour and %JustSayNo.']},

 'OhNoes': {500: ["Help I'm being held captive by a beast!  %OhNoes"]},

 'ShowYouTheWorld': {300: ['If some random dude offers to %ShowYouTheWorld do yourself a favour and %JustSayNo.']},

 'SnowMan': {400: ['Does not want to build a %SnowMan %StopAsking',

   'LOLZ BELLE.  %StockholmeSyndrome  %SnowMan']},

 'StockholmeSyndrome': {400: ['LOLZ BELLE.  %StockholmeSyndrome  %SnowMan'],

  500: ["Actually nm. This isn't so bad lolz :P %StockholmeSyndrome"]},

 'StopAsking': {400: ['Does not want to build a %SnowMan %StopAsking']}}


查看完整回答
反對 回復(fù) 2021-09-02
?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗 獲得超11個贊

那這個呢 ?


keys = ['name', 'last_name', 'phone_number', 'email']

dict2 = {x:dict1[x] for x in keys}


查看完整回答
反對 回復(fù) 2021-09-02
?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗 獲得超8個贊

在查看了您的要求后,我已使用以下代碼更新了我之前的帖子。我相信這就是您正在努力實(shí)現(xiàn)的目標(biāo)。唯一需要的導(dǎo)入是來自 collections 模塊的OrderedDict。


from collections import OrderedDict

from pprint import PrettyPrinter as pp



str_tag_dict = {}

for v in d.values():

    str_tag_dict[v[1]] = v[2]


def same_tags_and_ids(str1, str2):

    dd = {str1:str_tag_dict[str1], 

          str2:str_tag_dict[str2]}

    tag = []

    v = dd[str1]

    for vv in v:

        for ks in dd.keys():

            if vv in dd[ks]:

                tag.append(vv)

                for tg in tag:

                    if tag.count(tg) > 1:

                        return tg

    return None


ordp = OrderedDict(sorted(d.items()))

def same_tags_diff_ids():

    x = []

    y = []

    my_str = []

    for v in ordp.values():

        x.append(v[2][0])

        x.append(v[0])

        x.append(v[1])

        for i in x:

            if x.count(i) > 1 and type(i) == str:

                y.append(i)

    for i in range(len(x)):

        if x[i] == list(set(y))[0]:

            my_str.append({list(set(y))[0]:{x[i + 1]:[x[i + 2]]}})

    d={}

    k1, v1 = list(my_str[0][list(my_str[0])[0]].items())[0]

    k2, v2 = list(my_str[1][list(my_str[1])[0]].items())[0]

    d.update({list(my_str[0].keys())[0]:{k1:v1, k2:v2}}) 

    if not d == None:

        return d

    else:

        return None

dup_tag_str = same_tags_diff_ids()


for k, v in ordp.items():

    del d[k]

    for tag in v[2]:

        d[tag] = {v[0]:[v[1]]}


ordp = OrderedDict(sorted(d.items()))

ids= [list(v.keys())[0] for v in ordp.values()]

strs= [list(v.values())[0][0] for v in ordp.values()]


x = 0

for n in range(len(ordp)):

    tmp_keys = []

    for k, v in ordp.items():

        if not strs[x] == list(v.values())[0][0]:

            if ids[x] == list(v.keys())[0]:

                key = same_tags_and_ids(strs[x], list(v.values())[0][0])

                if not key == None:

                    tmp_keys.append(key)

                    if tmp_keys.count(key) == 1:

                        continue

                    else:

                        ordp[key][list(v.keys())[0]].append(strs[x])

    x += 1

dx = dup_tag_str

dy = dict(ordp)

dy.update(dx)

pp().pprint(dy)               

輸出:


 {'': {200: ['Make the ocean great again.']},

 'JustSayNo': {300: ['If some random dude offers to %ShowYouTheWorld do '

                 'yourself a favour and %JustSayNo.']},

 'OhNoes': {500: ["Help I'm being held captive by a beast!  %OhNoes"]},

 'ShowYouTheWorld': {300: ['If some random dude offers to %ShowYouTheWorld 

  do yourself a favour and %JustSayNo.']},

 'SnowMan': {400: ['LOLZ BELLE.  %StockholmeSyndrome  %SnowMan',

               'Does not want to build a %SnowMan %StopAsking']},

 'StockholmeSyndrome': {400: ['LOLZ BELLE.  %StockholmeSyndrome %SnowMan'],

                        500: ["Actually nm. This isn't so bad lolz :P "

                          '%StockholmeSyndrome']},

 'StopAsking': {400: ['Does not want to build a %SnowMan %StopAsking']}}


查看完整回答
反對 回復(fù) 2021-09-02
  • 3 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號