我有一个这样的清单:
list = [{'item1': value1,
'item2': [{'tinyitem21': tinyvalue21, 'tinyitem22': tinyvalue22}]},
{'item3': [{'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32}],
'item4': value4}]
我想要一个这样的列表:
list = [{'item1': value1,
'item2': {'tinyitem21': tinyvalue21, 'tinyitem22': tinyvalue22}},
{'item3': {'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32},
'item4': value4}]
我已经编写了下面的代码来尝试解决此问题,但是它不起作用:
for item in list:
for smallitem, smallvalue in item:
if type(smallvalue)=='list':
new_dict= {}
for tinyitem in smallvalue:
name = tinyitem.pop('name')
new_dict[name] = tinyitem
smallvalue=new_dict
谁能帮我?
python大神给出的解决方案
您可以使用此功能(请注意,列表已就位修改):
码:
def f(l):
for d in l:
for k, v in d.items():
if isinstance(v, list):
d[k] = v[0]
return l
输出:
>>> f(lst)
[{'item1': value1,
'item2': {'tinyitem21': tinyvalue21, 'tinyitem22': tinyvalue22}},
{'item3': {'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32},
'item4': value4}]
您还可以使用列表/字典理解:
>>> [{k: v[0] if isinstance(v, list) else v for k, v in d.items()} for d in lst]
[{'item1': value1,
'item2': {'tinyitem21': tinyvalue21, 'tinyitem22': tinyvalue22}},
{'item3': {'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32},
'item4': value4}]
如果嵌套列表/字典多于一个级别,则可以使用此递归函数:
def f(lst):
return [recursive_function(d) for d in lst]
def recursive_function(d):
rv = {}
for k, v in d.items():
if isinstance(v, list):
v = v[0]
if isinstance(v, dict):
v = recursive_function(v)
rv[k] = v
return rv
用法:
>>> lst = [{'item1': value1,
'item2': [{'tinyitem21': [{'tinyitem21': tinyvalue21,
'tinyitem22': tinyvalue22}],
'tinyitem22': tinyvalue22}]},
{'item3': [{'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32}],
'item4': value4}]
>>> f(lst)
[{'item1': 'value1',
'item2': {'tinyitem21': {'tinyitem21': tinyvalue21,
'tinyitem22': tinyvalue22},
'tinyitem22': tinyvalue22}},
{'item3': {'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32},
'item4': value'}]
Python:同时在for循环中添加到列表列表 - python我想用for循环外的0索引值创建一个新列表,然后使用for循环添加到相同的列表。我的玩具示例是:import random data = ['t1', 't2', 't3'] masterlist = [['col1', 'animal1', 'an…
用大写字母拆分字符串,但忽略AAA Python Regex - python我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…
Python查找单词可以用字符构建 - pythonClosed. This question needs details or clarity。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过editing this post阐明问题。 4个月前关闭。 Improve this question 我想找出单词'apple'(word_list)是否可以用char_list1构建但不能用char_li…
在Python中迭代OrderedDict - python我有以下OrderedDict:OrderedDict([('r', 1), ('s', 1), ('a', 1), ('n', 1), ('y', 1)]) 实际上,这表示单词中字母的出现频率。第一步-我将使用最后两个元素来创建一个这样的联合元组; pair…
如何在Matplotlib条形图后面绘制网格线 - pythonx = ['01-02', '02-02', '03-02', '04-02', '05-02'] y = [2, 2, 3, 7, 2] fig, ax = plt.subplots(1, 1) ax.bar(range(len(y)), y, width=…