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

展开字典键并转换为int

展开字典键并转换为int

呼唤远方 2021-05-18 01:09:45
我有一本字典,其中的键是描述列表的字符串:initial_dict = {'value1':'[1,2,3]',                'value2':'[4,5,6]'}我希望如下进行切换,扩展和转换:new_dict = {1:1,            2:1,            3:1,            4:2,            5:2,            6:2}那就是我想切换键和值,然后我希望字符串中的每个数字成为一个单独的整数键,并且在值方面,我还希望字符串也转换为int,例如'value1'-> 1。我可以切换键和值:switched_dict={val:key for (key, val) in initial_dict.items()}而且我能够交换新的价值观new_values = {"value1":1, "value2":2}fixed_values = {k: new_values.get(v, v) for k, v in switched_dict.items()}所以我现在有一个看起来像这样的字典:{'[1,2,3]':1, '[4,5,6]':2}但是我不确定如何扩展密钥并将其转换为单个int
查看完整描述

3 回答

?
MMTTMM

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

您可以ast.literal_eval用来将键转换为整数列表:


import ast

fixed_values = {'[1,2,3]':1, '[4,5,6]':2}

result = {}

for k, v in fixed_values.items():

  key_ints = ast.literal_eval(k)

  for i in key_ints:

    result[i] = v


查看完整回答
反对 回复 2021-05-25
?
慕后森

TA贡献1802条经验 获得超5个赞

使用ast模块来解析列表。


import ast


initial_dict = {'value1':'[1,2,3]',

                'value2':'[4,5,6]'}



expanded_vals = {k: ast.literal_eval(v) for k, v in initial_dict.items()}

result = {}


for k, v in expanded_vals.items():

    for e in v:

        result[e] = k


print(result)


查看完整回答
反对 回复 2021-05-25
?
忽然笑

TA贡献1806条经验 获得超5个赞

如果您想要一个可怕的单线,可以使用


initial_dict = {'value1':'[1,2,3]', 'value2':'[4,5,6]'}

new_values = {"value1": 1, "value2": 2}


new_dict = {z: y  for x, y in ((v, new_values[k]) for k, v in initial_dict.items()) for z in eval(x)}


# new_dict = {1: 1, 2: 1, 3: 1, 4: 2, 5: 2, 6: 2}


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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