0

私は1つのリスト「name_list」を持っています。

name_list=['Name:Bill,Age:28,Height:6.1', 'Name:Dona,Age:23,Height:6.1','Name:Bill,Age:22,Height:6.1', 'Name:Shelly,Age:24,Height:7'] 

1)一般的なデータでリストを並べ替えたい。たとえば、出力は次のようになります。

out=['Name:Bill,Age:28,Height:6.1', 'Name:Bill,Age:22,Height:6.1']

2)リストをMaxでソートしたい。年。たとえば、最大年齢出力を持っている人を確認したい場合は、次のようになります。

out=['Name:Bill,Age:28,Height:6.1']

これは私が今までやってきたことです:

name_list=['Name:Bill,Age:28,Height:6.1', 'Name:Dona,Age:23,Height:6.1','Name:Bill,Age:22,Height:6.1', 'Name:Shelly,Age:24,Height:7'] 


out = filter(lambda x:'Name:Bill' in x and 'Height:6.1' in x,list)
4

2 に答える 2

1

リストを処理しやすい構造に変換する必要があります。たとえば、次のようになります。

people = [
    dict(x.split(':') for x in y.split(','))
    for y in name_list
]

これにより、次のようなものが得られます。

[{'Age': '28', 'Name': 'Bill', 'Height': '6.1'}, 
 {'Age': '23', 'Name': 'Dona', 'Height': '6.1'}, 
 {'Age': '22', 'Name': 'Bill', 'Height': '6.1'}, 
 {'Age': '24', 'Name': 'Shelly', 'Height': '7'}]

このリストを反復して、必要な属性を選択します。たとえば、最年長の人を見つけるには、次のようにします。

oldest = max(people, key=lambda x: x['Age'])
于 2013-01-15T10:02:31.383 に答える
0

次を使用してデータを整理しますcollections.namedtuple

In [41]: from collections import namedtuple
         person = namedtuple('person','name age height')

In [42]: persons=[person(*(i.split(':')[1] for i in n.split(','))) 
                                               for n in name_list]

In [43]: max(persons,key=lambda x:x.age)
Out[43]: person(name='Bill', age='28', height='6.1')

In [44]: max(persons,key=lambda x:x.height)
Out[44]: person(name='Shelly', age='24', height='7')

In [45]: max(persons,key=lambda x:x.height).name
Out[45]: 'Shelly'
In [46]: persons
Out[46]: 
[person(name='Bill', age='28', height='6.1'),
 person(name='Dona', age='23', height='6.1'),
 person(name='Bill', age='22', height='6.1'),
 person(name='Shelly', age='24', height='7')]
于 2013-01-15T09:40:42.583 に答える