Python 清理列表、dict和元组的字典列表

Python 清理列表、dict和元组的字典列表,python,dictionary,Python,Dictionary,我有一个字典列表,可以包含更多的字典、列表或元组。我无法知道哪个键将这些对象中的一个作为值 我试图把上面提到的所有东西都从字典中删除,但保留了其他任何东西。同时,我也有一个关键的“名单”,存在于每一本字典。我需要把它连接成一个带“-”分隔符的字符串 我有这个代码,它工作得很好。我已经使用Python3一年了,想知道这是否是最具Python风格的方法?我找不到太多关于用谷歌从其他对象中按类型删除对象的信息 test_list = [{'val1': 'a', 'val2': 'b', 'dict'

我有一个字典列表,可以包含更多的字典、列表或元组。我无法知道哪个键将这些对象中的一个作为值

我试图把上面提到的所有东西都从字典中删除,但保留了其他任何东西。同时,我也有一个关键的“名单”,存在于每一本字典。我需要把它连接成一个带“-”分隔符的字符串

我有这个代码,它工作得很好。我已经使用Python3一年了,想知道这是否是最具Python风格的方法?我找不到太多关于用谷歌从其他对象中按类型删除对象的信息

test_list = [{'val1': 'a', 'val2': 'b', 'dict': {'a': 'b'}, 'list': ['a', 'b'], 'tuple': ('a', 'b')},
             {'val66': 'a', 'val65': 'b', 'dict22': {'a': 'b'}, 'list': ['a', 'b'], 'tuple22': ('a', 'b')}]

for obj in test_list:
    x = obj
    x['list_path'] = "-".join(str(v) for v in obj['list'])
    x = {k: v for k, v in x.items() if not (isinstance(v, dict) or isinstance(v, list) or isinstance(v, tuple))}
    print(x)
输出(正确):


有两件事我会改变:

  • 将某个对象名为
    obj
    ,然后将其重命名为
    x
    下一行是没有任何意义的。也许你以为你在抄袭?第一个更改(关于
    list\u path
    )实际上修改了原始对象

  • isinstance
    接受要测试的类的元组

  • 因此,我将执行以下操作(不会修改原件):


    有两件事我会改变:

  • 将某个对象名为
    obj
    ,然后将其重命名为
    x
    下一行是没有任何意义的。也许你以为你在抄袭?第一个更改(关于
    list\u path
    )实际上修改了原始对象

  • isinstance
    接受要测试的类的元组

  • 因此,我将执行以下操作(不会修改原件):


    是的,我想我是在抄袭,但我现在已经读过了,并且意识到了我的错误。谢谢你。我不知道“isinstance”可以接受一个元组。谢谢。是的,我想我是在抄袭,但我现在已经读过了,并且意识到我的错误。谢谢你。我不知道“isinstance”可以接受一个元组。谢谢。
    {'val1': 'a', 'val2': 'b', 'list_path': 'a-b'}
    {'val66': 'a', 'val65': 'b', 'list_path': 'a-b'}
    
    for x in test_list:
        filtered_x = {k: v for k, v in x.items()
                      if not isinstance(v, (dict, list, tuple))}
        filtered_x['list_path'] = "-".join(map(str, x['list']))
        print(filtered_x)