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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Python:如何使用包含范圍的 dict 加載 json

Python:如何使用包含范圍的 dict 加載 json

回首憶惘然 2022-10-06 18:50:56
我的 python 代碼是關(guān)于從 dict 鍵生成序列號(hào),并且我的 dict 鍵是使用模塊中的cycle包定義的范圍。itertoolsworking example:from itertools import cyclee = {'Apple': cycle(range(1,999)),'Orange': cycle(range(1,999)),'Banana': cycle(range(1,999))}def SequenceNum(f):    return f'{next(e[f])}'.zfill(3)X = SequenceNum('Apple')print(X)output001 --> it keeps incrementing in the range specified above in dict `e`Challenge:我的要求是將此字典e轉(zhuǎn)換為 json 文件。因此它將通過(guò)解析 json 文件來(lái)加載鍵和值。cat test.json{    "DATA": {        "Apple": "cycle(range(1,999))",        "Orange": "cycle(range(1,999))",        "Banana": "cycle(range(1,999))"    }}(我必須將 dict 值放在雙引號(hào)內(nèi)以避免 json 文件加載錯(cuò)誤。)codeimport jsonfrom itertools import cyclewith open('test.json') as f:    FromJson = json.load(f)d = FromJson['DATA']print(d)def SequenceNum(f):    return f'{next(d[f])}'.zfill(3)X = SequenceNum('Apple')i = 1while i <= 10:    print(i, SequenceNum('Apple'))    i += 1這里新的 dict 是d加載 json 文件,它將加載單引號(hào)中的值。output{'Apple': 'cycle(range(1,999))', 'Orange': 'cycle(range(1,999))', 'Banana': 'cycle(range(1,999))'} #THIS IS OUTPUT of 'd' after loading json fileTraceback (most recent call last):  File "c:\Users\chandu\Documents\test.py", line 14, in <module>    print(i, SequenceNum('Apple'))  File "c:\Users\chandu\Documents\test.py", line 12, in SequenceNum    return f'{next(d[f])}'.zfill(3)TypeError: 'str' object is not an iterator它給出了錯(cuò)誤,因?yàn)槲业?dict 值不能通過(guò)循環(huán) itertools 模塊正確迭代,因?yàn)樗鼈冊(cè)谝?hào)中。我不知道這個(gè)錯(cuò)誤是否還有其他原因。
查看完整描述

1 回答

?
陪伴而非守候

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

如果您確定每個(gè)值是什么,則可以eval小心操作:


def SequenceNum(f):

    return f'{next(eval(d[f]))}'.zfill(3)

請(qǐng)注意,這是非常危險(xiǎn)的,因?yàn)閑val它會(huì)評(píng)估傳遞給它的任何東西并可能造成傷害。


這也將始終從迭代器中獲取第一個(gè)值,因?yàn)樗看味急辉u(píng)估為新值。要解決,您可以:


def SequenceNum(f):

    return eval(d[f])


i = 1

seq_iter = SequenceNum('Apple')

while i <= 10:

    print(i, f'{next(seq_iter)}'.zfill(3))

    i += 1


查看完整回答
反對(duì) 回復(fù) 2022-10-06
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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