【问题标题】:Storing list into dictionary from excel- part 2从excel-第2部分将列表存储到字典中
【发布时间】:2019-11-06 21:26:52
【问题描述】:

我有一个列表,我想将其转换为预期的字典输出。

列表是:

[['Nodeb_IN_New',107,'class-default',['h10'],['h1'],[7],'dscp-fc-map',['ef']],[",","['h11'],['h2'],[5],'dscp-fc-map',['af41']],[",",",['l12','l13','l14'],['l1'],[4],'dscp-fc-map',['af11','af21','af31']],['Nokia_SRAN_S1-MME_X2_IN','102',",['h15','h16'],['h1'],[7],'dscp-fc-map',['ef','nc1']]]

预期的字典输出是:

res1= {'Nodeb_IN_New':{'policy_id':107,'default':'class-default','mplsa':['h10','h11','l12','l13','l14'],'mpls':['h1','h2','l1'],'qos':[7,5,4],'nokia':'dscp-fc-map','dscp':['ef','af41,'af11','af21','af31']},'Nokia_SRAN_S1-MME_X2_IN':{'policy_id':'102',default':",'mplsa':['h15','h16'],'mpls':['h1'],'qos':[7],'nokia':'dscp-fc-map','dscp':['ef','nc1']}}

这是我从中提取列表的 excel:

如果 list[0] 表示第一列为空,则不要读取 dscp_fc_map 请帮忙写代码。

【问题讨论】:

  • 能否分享 Excel 数据的文本版本而不是图片?
  • Nodeb_IN_New 107 类-默认移动性-白金 h10 h1 7 dscp-fc-map ['ef'] 移动性-gold-new h11 h2 5 dscp-fc-map ['af41'] 移动性-银-new l12 l13 l14 l1 4 dscp-fc-map ['af11', 'af21', 'af31'] Nokia_SRAN_S1-MME_X2_IN 102 Nokia_SRAN_mobility_platinum h15 h16 h1 7 dscp-fc-map ['ef', 'nc1']跨度>

标签: python excel list dictionary store


【解决方案1】:

据我所知,您需要将列表列表转换为 dict,其中键是每个内部列表中的第一项,值是具有固定键的 dict,值从内部列表的第二个到最后一个元素。在 python 中这很容易:

lst = [
  ['key1', 'val1', 'val2', ['complex', 'val']], 
  ['key2', 'val21', 'val22', ['complex2', 'val2']] 
]

# First step
# result = {
#   l[0]: l[1:] for l in lst
# }

# Second step
# dict(zip(['header1', 'header2', 'header3'], l))
#

# Combined
result = {
  l[0]: dict(zip(['key11', 'key12', 'complexkey'], l[1:])) for l in lst
}

给出:

result = 
{
 'key1': {'key11': 'val1',  'key12': 'val2',  'complexkey': ['complex', 'val']  },
 'key2': {'key11': 'val21', 'key12': 'val22', 'complexkey': ['complex2', 'val2']}
}

【讨论】:

    【解决方案2】:

    我希望这是您正在寻找的,如果不是,请详细说明您的问题。

    import pandas as pd
    file_path = 'Check.xlsx'
    df = pd.read_excel(file_path, encoding='utf-16')
    df.rename( index={0:'policy_id', 1: 'default'...........}, inplace = True)
    df = df.to_dict()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-19
      • 2012-01-18
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      相关资源
      最近更新 更多