将python对象拆分为两个对象
我有一个物体看起来像将python对象拆分为两个对象,python,Python,我有一个物体看起来像 object = [{'number':'230/600','blah':'hi'},{'number':'240/620','blah':'hey'}] 我想将其拆分为以下格式 [{'first':'230','second':'600', 'blah':'hi'},{'first':'240','second':'620','blah':'hey'}] 根据/?之前和之后的内容如何进行拆分的任何提示假定格式是固定的,您可以执行以下操作: >>>
object = [{'number':'230/600','blah':'hi'},{'number':'240/620','blah':'hey'}]
我想将其拆分为以下格式
[{'first':'230','second':'600', 'blah':'hi'},{'first':'240','second':'620','blah':'hey'}]
根据
/
?之前和之后的内容如何进行拆分的任何提示假定格式是固定的,您可以执行以下操作:
>>> object = [{'number':'230/600'},{'number':'240/620'}]
>>> for value in object:
... numbers = value['number'].split('/')
... new_object.append({'numbera': numbers[0], 'numberb': numbers[1]})
...
>>> new_object
[{'numberb': '600', 'numbera': '230'}, {'numberb': '620', 'numbera': '240'}]
>>>
编辑:这是在编辑问题之前。迈克的回答对编辑后的问题非常有效。这很有效:
res = []
for item in L:
d = {}
for key, value in item.items():
split_value = value.split('/')
if len(split_value) > 1:
for entry, name in zip(split_value, ['first', 'second']):
d[name] = entry
else:
d[key] = value
res.append(d)
现在:
如果数据中有另一个元素不变,但应该在新元素中,该怎么办?请参见编辑。例如
object=[{'number':'230/600','blah':'hi'},{'number':'240/620','blah':'hey'}]
@nquestion你可以用[:]像foo=object[:]一样克隆列表object
编辑:这是在你编辑它之前给你的注释。@Eekan我也可以只做新建对象.append({'numbera':numbers[0],'numberb':numbers[1],'blah':value['blah']}
获取blah
元素?@nquestion是的,顺便说一下新对象
没有在该代码中定义,因此您应该将其绑定到空列表[]
abc
部分是关于什么的?@nquestion:Fornumbera
,numberb
和numberc
。查看文档。abc
是将添加到number
以形成numbera
等的字母。如果要拆分的元素超过三个,则需要更多的字母string.ascii_小写
在这里可能很有用。最短者获胜。拆分字符串中只有两个条目。因此,只使用了a
和b
。但是考虑到我在上面的编辑,[{'first':'230','second':'600','blah':'hi'},{'first':'240','second':'620','blah':'hey'},{/code>
>>> res
[{'blah': 'hi', 'first': '230', 'second': '600'},
{'blah': 'hey', 'first': '240', 'second': '620'}]