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

反转字典中的键值(Python 中的高级反转字符串)

反转字典中的键值(Python 中的高级反转字符串)

慕后森 2021-09-25 21:19:48
所以我试图做的是输出字符串“33k22k11k”,它只是最后一个值,后跟反向最后一个键,然后是倒数第二个值,然后是倒数第二个反向键,依此类推。我不确定如何为我所在的特定循环获取反向键值。从我目前拥有的代码中,我得到输出:dict = {"k1":1, "k2":2, "k3":3}current=""current_k=""for k,v in dict.items():    for i in k:        current_k=i+current_k    current=str(v)+current_k+currentprint(current)print(current_k)33k2k1k22k1k11k3k2k1k
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

已编辑


首先,如果你在 python < 3.6 上,dict不保持项目的顺序。您可能想要collections.OrderedDict用于您的目的。


d = {"k1":1, "k2":2, "k3":3}

d.keys()

# dict_keys(['k2', 'k1', 'k3'])

然而,


d = OrderedDict()

d['k1'] = 1

d['k2'] = 2

d['k3'] = 3

d.keys()

# odict_keys(['k1', 'k2', 'k3'])

使用我们的 new d,您可以添加键和值并将其反转:


res = ''

for k, v in d.items():

    res += str(k) + str(v)

res[::-1]

# '33k22k11k'

或反向迭代:


res = ''

for k, v in reversed(d.items()):

    res +=  str(v)[::-1] + str(k)[::-1]

res

# '33k22k11k'


查看完整回答
反对 回复 2021-09-25
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

为什么不简单地做:

print(''.join([a+str(b) for a,b in dict.items()])[::-1])

输出:

"33k22k11k"

但如果值与键不同,请执行以下操作:

print(''.join([str(b)[::-1]+a for a,b in dict.items()[::-1]]))


查看完整回答
反对 回复 2021-09-25
?
富国沪深

TA贡献1790条经验 获得超9个赞

也许你可以做这样的事情:


dict = {"k1":1, "k2":2, "k3":3}

print("".join(list(reversed([str(v)+"".join(reversed(k)) for k, v in dict.items()]))))               

输出:


33k22k11k


查看完整回答
反对 回复 2021-09-25
  • 3 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信