在python中排序不同的数据类型

83qze16e  于 2022-12-01  发布在  Python
关注(0)|答案(2)|浏览(141)
li=[22 , True , 22/7 , {"Staat":"Deutschland" , "Stadt" : "Berlin"}  , 69 
       , ["Python" , "C++" , "C#"] ,
       ("Kairo" , "Berlin" , "Amsterdam")  , False , "Apfel" , 55 ]

如何在多个列表中对该列表进行排序,每个列表对应一种数据类型(int、str、dict等)。
第一次

envsm3lx

envsm3lx1#

li=[22 , True , 22/7 , {"Staat":"Deutschland" , "Stadt" : "Berlin"}  , 69 
       , ["Python" , "C++" , "C#"] ,
       ("Kairo" , "Berlin" , "Amsterdam")  , False , "Apfel" , 55 ]

# this function groups elements by type
def group(lists):
    groups = dict()
    for i in lists:
        a = str(type(i)).split(" ")
        typ = a[1][1:-2]
        if typ in groups.keys():
            groups[typ].append(i)
        else:
            groups[typ] = [i]
    return groups

print(group(li))

结果:

{'int': [22, 69, 55], 'bool': [True, False], 'float': [3.142857142857143], 'dict': [{'Staat': 'Deutschland', 'Stadt': 'Berlin'}], 'list': [['Python', 'C++', 'C#']], 'tuple': [('Kairo', 'Berlin', 'Amsterdam')], 'str': ['Apfel']}
mqkwyuun

mqkwyuun2#

你可以使用一个字典,它有类型(x)作为键:

lists_by_type={};
for x in li:
    print (x)
    if type(x) in lists_by_type.keys():
        lists_by_type[type(x)].append(x)
    else:
        lists_by_type[type(x)]=[x]

然后,这将为您提供一个包含每种数据类型的列表的字典
结果如下:

{int: [22, 69, 55],
 bool: [True, False],
 float: [3.142857142857143],
 dict: [{'Staat': 'Deutschland', 'Stadt': 'Berlin'}],
 list: [['Python', 'C++', 'C#']],
 tuple: [('Kairo', 'Berlin', 'Amsterdam')],
 str: ['Apfel']}

相关问题