我有这样的词典列表:
one_list = [{'true black': ['AA1', ['BB']]}, {'white': ['AA2', ['CC1', 'CC2']]}]
我需要制作下一个:
list = ['AA1', 'BB', 'CC1', 'CC2']
所以我需要把[0]元素作为真正的黑色' ,那么来自[1]元素的所有元素都是真正的黑色'和[1]所有其他词典
for i in one_list:
if 'true_black' in i.keys():
for v in i.values():
container.append(v[0])
for v1 in v[1]:
pic_container.append(v1)
但我得到了
>>> ['AA1', 'AA2', 'BB', 'CC1', 'CC2']
答案 0 :(得分:1)
所以,假设我得到了你要求的东西(Python 3.x的代码,特别是3.4):
lead_color_name = 'true black'
one_list = [{'true black': ['AA1', ['BB']]}, {'white': ['AA2', ['CC1', 'CC2']]}]
non_lead_colors = [x for x in one_list if lead_color_name not in x]
lead_color = [x for x in one_list if lead_color_name in x][0][lead_color_name]
end_list = []
end_list.append(lead_color[0])
end_list.extend(lead_color[1])
for x in non_lead_colors:
end_list.extend(list(x.values())[0][1])
print(end_list)
end_list给了我(这就是你说的你想要的):
['AA1', 'BB', 'CC1', 'CC2']
修改:我更新了代码,以便了解"线索"颜色,在这种情况下,你的铅颜色是"真正的黑色"。这样,如果您需要使用不同的颜色而不是真正的黑色,您可以轻松更改密钥。
例如,如果您希望您的颜色为白色而不是真正的黑色,则结果为
['AA2', 'CC1', 'CC2', 'BB']
如果您使用与其他颜色相同的格式向one_list添加更多颜色,您将获得其内部列表,例如' BB'或(' CC1和' CC2')按照您的要求附加到输出列表。
所以,根据你的评论,如果one_list如下:
one_list = [{'true black': ['AA1', ['BB']]}, {'white': ['AA2', ['CC1', 'CC2']]}, {'blue': ['AA3', ['DD1', 'DD2']]}]
end_list将是:
['AA1', 'BB', 'CC1', 'CC2', 'DD1', 'DD2']
答案 1 :(得分:1)
怎么样?
one_list = [{'true black': ['AA1', ['BB']]}, {'white': ['AA2', ['CC1', 'CC2']]}]
ret_list = []
for i in one_list:
if i.get("true black"):
for j in list(i.values())[0]:
if isinstance(j, list):
ret_list += j
else:
ret_list.append(j)
else:
ret_list += i.popitem()[1][1]
print(ret_list)
答案 2 :(得分:1)
以下是另一种方法:
one_list = [{'true black': ['AA1', ['BB']]}, {'white': ['AA2', ['CC1', 'CC2']]}]
color = 'true black'
first = one_list[0][color]
new_list = [first[0], first[1][0]]
gen = (g for g in one_list if color not in g.keys())
for g in gen:
for l in g.values():
for n in l[1]:
new_list.append(n)
print(new_list)
输出:
['AA1', 'BB', 'CC1', 'CC2']