亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何將此元組列表更改為以下格式?

如何將此元組列表更改為以下格式?

江戶川亂折騰 2023-10-25 10:55:49
我正在嘗試更改以下元組:[((' "business_id": "zPBccKsIHYtLUGFNYIi8Uw"', ' "business_id": "znDUBjt-m2qmXi_p3m3rDA"'), 0.09523809523809523),((' "business_id": "zauhMY78k36XPfxD3GURkQ"', ' "business_id": "zp-K5s3pGTWuuaVBWo6WZA"'), 0.07407407407407407)]到這種格式:{'b1': 'zPBccKsIHYtLUGFNYIi8Uw', 'b2': "znDUBjt-m2qmXi_p3m3rDA', 'sim': 0.09523809523809523}我嘗試通過嘗試將其更改為 dict (這是不可能的,因為它不知道如何分配鍵和值)和列表來解決此問題,但似乎沒有任何點擊。我目前正在使用 Python 將元組寫入輸出文件:fout = open(outfilePath, mode = 'w')fwriter = csv.writer(fout, delimiter = ',', quoting = csv.QUOTE_MINIMAL)for pair in similarPairs:    fwriter.writerow([ str(pair[0][0]), str(pair[0][1]), pair[1]])fout.close()我使用閾值 >=0.055 的 Jaccard 相似度找到相似對:## Computing the Jaccard Similarity for the candidate pairs.similarPairs = candidatePairs.map(lambda currPair : computeJC(currPair, ratedBusinessUsers)).filter(lambda f : f[1] >= 0.055).collect()如何更改輸出寫入以獲得我想要的格式?
查看完整描述

3 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

如果您的元組保持該格式,那么您需要進行一些字符串解析,以便從元組的第一個元素中獲取 ID。 split對于這種情況,這是最好的方法。對于您當前的格式,此代碼可以工作,但您絕對可以將其推廣到其他情況。


def fix_tuple(tup):

  ids = tup[0]

  id1 = ids[0].split('"')[-2]

  id2 = ids[1].split('"')[-2]

  return {'b1':id1,'b2':id2,'sim':tup[1]}

行動中:


tup = ((' "business_id": "zPBccKsIHYtLUGFNYIi8Uw"', ' "business_id": "znDUBjt-m2qmXi_p3m3rDA"'), 0.09523809523809523)

print(fix_tuple(tup))

# Output: {'b1': 'zPBccKsIHYtLUGFNYIi8Uw', 'b2': 'znDUBjt-m2qmXi_p3m3rDA', 'sim': 0.09523809523809523}



查看完整回答
反對 回復 2023-10-25
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

從您編寫代碼的文件來看,您的元組的格式似乎一致,因此如果這是真的,那么這很簡單:


x = ((' "business_id": "zPBccKsIHYtLUGFNYIi8Uw"', ' "business_id": "znDUBjt-m2qmXi_p3m3rDA"'), 0.09523809523809523)

yy = {}

yy['b1'] = x[0][0].split(':')[1].strip('" ')

yy['b2'] = x[0][1].split(':')[1].strip('" ')

yy['sim'] = x[1]

您知道所有成員在元組中的位置,因此獲取所需的值,刪除無關的引號和空格,然后將其全部打包到字典中。


查看完整回答
反對 回復 2023-10-25
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

import re


KV_RE = re.compile(r'"(?P<key>[^"]+)":\s*"(?P<value>[^"]+)"')

getvalue = lambda kv: match.group("value") if (match := KV_RE.search(kv)) else None


def dict_from_pair(pair):

    ((kv1, kv2), sim) = pair

    return dict(b1=getvalue(kv1), b2=getvalue(kv2), sim=sim)


pair = ((' "business_id": "zPBccKsIHYtLUGFNYIi8Uw"', ' "business_id": "znDUBjt-m2qmXi_p3m3rDA"'), 0.09523809523809523)


print(dict_from_pair(pair))

# {'b1': 'zPBccKsIHYtLUGFNYIi8Uw', 'b2': 'znDUBjt-m2qmXi_p3m3rDA', 'sim': 0.09523809523809523}



查看完整回答
反對 回復 2023-10-25
  • 3 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號