【问题标题】:convert unequaled length list of string to dictionary python将不等长的字符串列表转换为字典python
【发布时间】:2017-06-21 05:31:22
【问题描述】:

我有一个这样的字符串列表

["['List one', 'F, U','P']", 
"['List Two', 'J, C,  D,I']",     
"['List Three', 'W']",
"['List Four', 'Y, B','E, H, M','L, N']"]

我会列出将其转换为这样的字典列表

{
  List One: ['F','U','P'], 
  List Two: ['J','C','D','I'],     
  List Three: ['W'],
  List Four: ['Y', 'B','E','H','M','L', 'N']
}

我找到了类似的例子,但没有足够接近的例子

【问题讨论】:

  • 更新答案以匹配最新的问题变化

标签: python python-3.x data-structures


【解决方案1】:

最短路径:

import itertools
import re

res = {eval(i)[0]: list(itertools.chain.from_iterable([re.split('\W+', j) for j in eval(i)[1:]])) for i in input_list}

最快的方法:

import itertools
import re

res = {}
for i in input_list:
    l = eval(i)
    res[l[0]] = list(itertools.chain.from_iterable([re.split('\W+', j) for j in l[1:]]))

为了增加稳健性,请使用ast.literal_eval 而不是evalMaarten 建议)

【讨论】:

  • 我更喜欢 ast.literal_eval 而不是 eval 安全地将字符串评估为文字
  • 我在字符串列表中的所有元素中都包含了单引号。你能修改代码以反映这种变化吗?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 2016-12-05
  • 2022-01-03
  • 2011-07-12
  • 2014-05-23
相关资源
最近更新 更多