join - 嵌套列表中的重复项

时间:2014-11-30 21:00:20

标签: python list

for x in mylist:
        print x

输出类似于:

['2009/09/13_00:00', 'R']
['2009/09/13_00:00', 'R']
['2009/09/13_00:00', 'R']
['2009/09/13_00:00', 'R']
['2009/09/13_00:00', 'R']
['2009/09/13_00:00', 'R']
['2009/09/13_00:00', 'J']
['2009/09/13_00:00', 'J']
['2009/09/16_00:00', 'R']
['2009/09/18_00:00', 'R']
['2009/09/19_00:00', 'R']
['2009/09/23_00:00', 'R']
['2009/09/24_00:00', 'R']
['2009/09/24_00:00', 'W']
['2009/09/24_00:00', 'S']
['2009/09/24_00:00', 'S']
['2009/09/24_00:00', 'T']

我怎样才能将同一日期的重复项连接在一起?

例如,我想要的输出是:

['2009/09/13_00:00', 'R, R, R, R, R, R']
['2009/09/13_00:00', 'J, J']
['2009/09/16_00:00', 'R']
['2009/09/18_00:00', 'R']
['2009/09/19_00:00', 'R']
['2009/09/23_00:00', 'R']
['2009/09/24_00:00', 'R']
['2009/09/24_00:00', 'W']
['2009/09/24_00:00', 'S, S']
['2009/09/24_00:00', 'T']

我试图对此进行图表处理。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

mylist= [['2009/09/13_00:00', 'R'],
         ['2009/09/13_00:00', 'R'],
         ['2009/09/13_00:00', 'R'],
         ['2009/09/13_00:00', 'R'],
         ['2009/09/13_00:00', 'R'],
         ['2009/09/13_00:00', 'R'],
         ['2009/09/13_00:00', 'J'],
         ['2009/09/13_00:00', 'J'],
         ['2009/09/16_00:00', 'R'],
         ['2009/09/18_00:00', 'R'],
         ['2009/09/19_00:00', 'R'],
         ['2009/09/23_00:00', 'R'],
         ['2009/09/24_00:00', 'R'],
         ['2009/09/24_00:00', 'W'],
         ['2009/09/24_00:00', 'S'],
         ['2009/09/24_00:00', 'S'],
         ['2009/09/24_00:00', 'T'],
        ]

for i in list(set([ tuple(i) for i in mylist])):
    print [list(i) +[list(i)[-1]] * (mylist.count(list(i))-1) ]

Output

[['2009/09/13_00:00', 'R', 'R', 'R', 'R', 'R', 'R']]
[['2009/09/16_00:00', 'R']]
[['2009/09/24_00:00', 'T']]
[['2009/09/24_00:00', 'S', 'S']]
[['2009/09/13_00:00', 'J', 'J']]
[['2009/09/24_00:00', 'R']]
[['2009/09/18_00:00', 'R']]
[['2009/09/19_00:00', 'R']]
[['2009/09/23_00:00', 'R']]
[['2009/09/24_00:00', 'W']]

答案 1 :(得分:0)

或者更明确地说,使用字典:将日期和字母作为键收集并跟踪字母出现次数:

mydict = {}
for date, letter in mylist:
    try:
        mydict[(date, letter)] += 1
    except KeyError:
        mydict[(date, letter)] = 1

for date, letter in sorted(mydict.keys()):
    n = mydict[date, letter]
    print [date, ','.join([letter]*n)]