检查标志并追加后如何遍历字典键

时间:2021-03-24 10:42:31

标签: python dictionary

我的字典列表如下

d = 
[ { 'type': 'AB', 'name': 'a@gmail.com', 'flag':'Y' },
 { 'type': 'AB', 'name': 'cd@gmail.com', 'flag''Y' }, 
{ 'type': 'DE', 'name': 'm@gmail.com | n@gmail.com', 'flag':'Y' }, 
{ 'type': 'FG', 'name': '0@gmail.com', 'flag':'N' }, 
{ 'type': 'FG', 'name': 'p@gmail.com', 'flag':'N' } ,
 { 'type': 'DE', 'name': '0@gmail.com', 'flag':'Y' }]
  • 检查 flagtype 是否相同后,添加到 type
  • 名称 | 必须用逗号分隔

预期

[ { 'type': 'AB', 'name':[ 'a@gmail.com', 'cd@gmail.com'], 'flag':'Y' },
 { 'type': 'DE', 'name': ['m@gmail.com , n@gmail.com', '0@gmail.com'], 'flag':'Y' }, 
{ 'type': 'FG', 'name': '0@gmail.com',  'p@gmail.com'], 'flag':'N' } ]

1 个答案:

答案 0 :(得分:1)

我相信这可以满足您的要求:

new_list = []
for old_dict in d:
    old_dict["name"] = list(map(str.strip, old_dict["name"].split("|")))
    for new_dict in new_list:
        if (
            old_dict["type"] == new_dict["type"]
            and old_dict["flag"] == new_dict["flag"]
        ):
            new_dict["name"] += old_dict["name"]
            break
    else:
        new_list.append(old_dict)

因此,在结合 name 属性的同时,从旧的字典中创建一个新的字典列表。如果它有效或者您有任何问题,请告诉我。