为了账号安全,请及时绑定邮箱和手机立即绑定

字符串到字典解析没有逗号

字符串到字典解析没有逗号

忽然笑 2021-07-09 14:00:25
有一个奇怪的字符串表示,如"key1:value1:key2:value2:key3:value3...keyn:valuen"我需要创建一个字典,当你有逗号时很容易解决,但是这里只有冒号,你必须每隔一个冒号拆分字符串。带有循环或类似内容的代码看起来很丑,所以我想知道您是否可以帮助我使用 oneliner。
查看完整描述

2 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

如果您对 iter(以及我认为更好的 schwobaseggls 解决方案)感到不舒服,您可以以几乎相同的方式使用压缩列表切片:


s = 'key1:value1:key2:value2:key3:value3:keyn:valuen'

splitted = s.split(':')


# even_elements = splitted[::2]   - take every 2nd starting at 0th index

# odd_elements  = splitted[1::2]  - take every 2nd startIng at 1st index

k = {k:v for k,v in zip(splitted[::2],splitted [1::2]) }

print(k) 

输出:


{'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'keyn': 'valuen'}

或者,您可以手动创建字典:


s = 'key1:value1:key2:value2:key3:value3:keyn:valuen'

splitted = s.split(':')

d ={}


# this generates 2-slices from the list and puts them into your dict

for k,v in (splitted[i:i+2] for i in range(0,len(splitted),2)):

    d[k] = v


# or d = { k:v for k, v in (splitted[i:i+2] for i in range(0,len(splitted),2) )}

# or d = dict(splitted[i:i+2] for i in range(0,len(splitted),2) )


print(d)

输出:


{'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'keyn': 'valuen'}


查看完整回答
反对 回复 2021-07-27
  • 2 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号