将嵌套的字符串元素转换为具有 python 中一个元素的列表
convert nested string element into list with one element in python
希望这是一个简单的。
我有以下 json:
{
'listTitle': 'dsadasdsa',
'chapters': 'testchapter',
'sublist': [
{
'subListCreator': 'jan',
'item': [
{
'itemTitle': 'dasdasd',
'itemContext': 'None'
}
]
}
]
}
我可以通过以下方式打印我的 testchapter 值:
print(data['chapters'])
问题来了,我想做两件事:
删除完整的章节元素以防章节字符串为空: 'chapters': ''
将章节转换为包含测试章节值的列表。
情况 1 的预期结果:
{
'listTitle': 'dsadasdsa',
'sublist': [
{
'subListCreator': 'jan',
'item': [
{
'itemTitle': 'dasdasd',
'itemContext': 'None'
}
]
}
]
}
情况 2 的预期结果:
{
'listTitle': 'dsadasdsa',
'chapters': [
'testchapter'
],
'sublist': [
{
'subListCreator': 'jan',
'item': [
{
'itemTitle': 'dasdasd',
'itemContext': 'None'
}
]
}
]
}
尝试了很多东西,但到目前为止都没有成功。要么它仍然是一个字符串而不是列表,同时看起来像一个列表。或者所有的字符串字符都被转换为单独的列表元素等
希望你能帮助我! :)
如果可以的话,就地修改字典是最简单的方法:
if data['chapters']:
data['chapters'] = [data['chapters']]
else:
data.pop('chapters')
通过推导构建新的字典可能如下所示:
{k: [v] if k == 'chapters' else v for k, v in data.items() if v or k != 'chapters'}
听起来您找不到的关键是要将单个值 v
转换为包含该值的列表,您需要使用列表文字表达式 [v]
.如果你这样做 list(v)
,你会得到一个列表,其中包含 v
迭代中的每个项目(所以如果 v
是一个字符串,你会得到它的单个字符的列表)。
希望这是一个简单的。
我有以下 json:
{
'listTitle': 'dsadasdsa',
'chapters': 'testchapter',
'sublist': [
{
'subListCreator': 'jan',
'item': [
{
'itemTitle': 'dasdasd',
'itemContext': 'None'
}
]
}
]
}
我可以通过以下方式打印我的 testchapter 值:
print(data['chapters'])
问题来了,我想做两件事:
删除完整的章节元素以防章节字符串为空:
'chapters': ''
将章节转换为包含测试章节值的列表。
情况 1 的预期结果:
{
'listTitle': 'dsadasdsa',
'sublist': [
{
'subListCreator': 'jan',
'item': [
{
'itemTitle': 'dasdasd',
'itemContext': 'None'
}
]
}
]
}
情况 2 的预期结果:
{
'listTitle': 'dsadasdsa',
'chapters': [
'testchapter'
],
'sublist': [
{
'subListCreator': 'jan',
'item': [
{
'itemTitle': 'dasdasd',
'itemContext': 'None'
}
]
}
]
}
尝试了很多东西,但到目前为止都没有成功。要么它仍然是一个字符串而不是列表,同时看起来像一个列表。或者所有的字符串字符都被转换为单独的列表元素等
希望你能帮助我! :)
如果可以的话,就地修改字典是最简单的方法:
if data['chapters']:
data['chapters'] = [data['chapters']]
else:
data.pop('chapters')
通过推导构建新的字典可能如下所示:
{k: [v] if k == 'chapters' else v for k, v in data.items() if v or k != 'chapters'}
听起来您找不到的关键是要将单个值 v
转换为包含该值的列表,您需要使用列表文字表达式 [v]
.如果你这样做 list(v)
,你会得到一个列表,其中包含 v
迭代中的每个项目(所以如果 v
是一个字符串,你会得到它的单个字符的列表)。