为了账号安全,请及时绑定邮箱和手机立即绑定

Python:格式化列表中的数据

Python:格式化列表中的数据

PHP
www说 2023-11-09 21:23:44
我有很多这样的数据列表:['Pardubický kraj', 'Pardubice', 'Libišany', 'Libišany']['Královéhradecký kraj', 'Hradec Králové', 'Nechanice', 'Lubno u Nechanic']['Královéhradecký kraj', 'Hradec Králové', 'Nechanice', 'Nechanice']我需要创建一个字符串,如下所示:Královéhradecký kraj`  Hradec Králové    1 Nechanice      1a Lubo u Nechanic      1b NechanicePardubický kraj  Pardubice    2 Libišany      2a Libišany换句话说,每个列表的最后一个元素是唯一的,但层次上的其他元素可能是相同的,并且在一致的情况下可以不重复。我还需要每个分层组按字母顺序排序。我不知道该怎么做。我将不胜感激任何建议谢谢编辑:如果我再举一些例子:['black', 'one', 'cat']['black', 'two', 'dog']['red', 'five', 'pig']['pink', 'one', 'snake']black 1 one  1a cat 2 two  2a dogred 3 five  3a pigpink 4 one  4a snake
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

我认为有一种更优雅的方式来写这个。我还没有找到时间来获取这个。所以这里有一个快速但肮脏的版本,但仍然对你有用。


x = [['black', 'sugar', 'second', 'dog'],

     ['red', 'cane', 'five', 'pig'],

     ['black', 'sugar', 'first', 'cat'],

     ['pink', 'cute', 'one', 'snake'],

     ['pink', 'angry', 'one', 'donkey'],

     ['black', 'sugar', 'third', 'bird'],

     ['red', 'cane', 'five', 'monkey'],

     ['pink', 'angry', 'one', 'spider']]


x.sort()


print (x[0][0])

print ('  ' + x[0][1])

print ('   1 ' + x[0][2])

print ('     1a '+x[0][3])


level_2 = 1

level_3 = 'a'


for i,a in enumerate(x[1:]):

    if a[0] == x[i][0]:

        if a[1] == x[i][1]:

            if a[2] == x[i][2]:

                level_3 = chr(ord(level_3) + 1)

            else:

                level_2 +=1

                level_3 = 'a'

                print ('   ' + str(level_2) + ' ' + a[2])

        else:

            level_2 +=1

            level_3 = 'a'

            print ('  ' + a[1])

            print ('   ' + str(level_2) + ' ' + a[2])

    else:

        level_2 +=1

        level_3 = 'a'

        print (a[0])

        print ('  ' + a[1])

        print ('   ' + str(level_2) + ' ' + a[2])

    print ('     ' + str(level_2) + level_3 + ' ' + a[3])

其输出是:


black

  sugar

   1 first

     1a cat

   2 second

     2a dog

   3 third

     3a bird

pink

  angry

   4 one

     4a donkey

     4b spider

  cute

   5 one

     5a snake

red

  cane

   6 five

     6a monkey

     6b pig


查看完整回答
反对 回复 2023-11-09
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信