出于標準響應的目的,我需要從中轉換字符串:[(('Ethyl', 'alcohol'), 1.0), (('clean', 'water'), 1.0)]對此:[{"words": "Ethyl,alcohol", "score": 1.0}, {"words": "clean,water", "score": 1.0}]我能夠正確編碼,但我的代碼看起來不像“pythony”。這是我的代碼:lst = []for data in dataList: dct = {} dct['words'] = data[0][0] + ',' + data[0][1] dct['score'] = data[1] lst.append(dct)sResult = json.dumps(lst)print(sResult)我的代碼可以接受嗎?我會更頻繁地處理這個問題,并希望看到一種更可讀的 python 方式。
2 回答

有只小跳蛙
TA貢獻1824條經(jīng)驗 獲得超8個贊
使用理解來嘗試這個:
dataList = [(('Ethyl', 'alcohol'), 1.0), (('clean', 'water'), 1.0)]
[{'words': ','.join(x), 'score': y} for x, y in dataList]
輸出:
[{'words': 'Ethyl,alcohol', 'score': 1.0},
{'words': 'clean,water', 'score': 1.0}]

汪汪一只貓
TA貢獻1898條經(jīng)驗 獲得超8個贊
您可以使用兩種方法來縮短代碼,這兩種方法肯定不會更具可讀性,但這是首選方法:
內聯(lián)字典構造
lst = []
for data in dataList:
lst.append({'words': data[0][0] + ',' + data[0][1], 'score' : data[1]})
使用列表理解
lst = [{'words': data[0][0] + ',' + data[0][1], 'score': data[1]} for data in dataList]
添加回答
舉報
0/150
提交
取消