3 回答
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
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}
![?](http://img1.sycdn.imooc.com/545861f00001be3402200220-100-100.jpg)
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]
您知道所有成员在元组中的位置,因此获取所需的值,删除无关的引号和空格,然后将其全部打包到字典中。
![?](http://img1.sycdn.imooc.com/545865470001bf9402200220-100-100.jpg)
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}
添加回答
举报