搜索嵌套的Lis

2024-05-26 21:51:06 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我得到了一个大的文本文件和分类。我做的第一件事就是遍历它并将它添加到一个列表中,这样每一行都是一个元素。然后我做了它,这样就可以把这一行编入索引。参见下面的代码。你知道吗

def main():
   f = open("/usr/local/doc/FEguide.txt", "r")
   full = list()
   companies= list()
   for line in f:
      line = line.split(",")
      full.append(line[1:])

打开的文件中有一行是这种格式的。(1:slice是为了省略文本行中无用的第一个元素,下面没有显示)

现在我需要这样做,用户可以输入一个汽车制造商或类型(即标准SUV)的搜索词。我的直觉是,我需要做一个汽车制造商的名单(可以做一些切片),然后一个列表(所有类型),然后有这个调用整个行如果真的。我真的很难实现。你知道吗


Tags: 代码元素类型列表maindefline分类
2条回答

你可以用zip和dict

假设您有此文件:

General Motors,Chevrolet,K1500 TAHOE 4WD,2900
General Motors,Chevrolet,TRAVERSE AWD,2750
Chrysler Group LLC,Dodge,Durango AWD,2750   
Chrysler Group LLC,Dodge,Durango AWD,3400
Ford Motor Company,Ford,Expedition 4WD,3100
Ford Motor Company,Ford,EXPLORER AWD,275

首先定义标题的外观:

。。。汽车.py... 你知道吗

import sys

cars_list = []
# header list
headers = ['company', 'Line', 'Type', 'Annual Cost']

with open('/home/ajava/tst.txt') as file:
    # you should maybe check if both zip matrixs have the same size!!
    for line in file:
        zipped_list = zip(headers,line.strip().split(','))

        #create a dictionary of zipped-tuples and append it to the car_list
        cars_list.append(dict(zipped_list))

# printing results
print("\t".join(headers))
for item in cars_list:
    print("{company}\t{line}\t{type}\t{annual cost}".format(**item))

您的输出应该如下所示:

  company   line    type    annual cost
  General Motors    Chevrolet   K1500 TAHOE 4WD 2900
  General Motors    Chevrolet   TRAVERSE AWD    2750
  Chrysler Group LLC    Dodge   Durango AWD 2750
  Chrysler Group LLC    Dodge   Durango AWD 3400
  Ford Motor Company    Ford    Expedition 4WD  3100
  Ford Motor Company    Ford    EXPLORER AWD    275

当然,这只是一个简单的例子,说明如何在没有额外lib的情况下做到这一点。你知道吗

我认为没有必要重新发明轮子,除非这是一个编程任务。我将把命令行交互留给您,但基本功能是使用pandas

import pandas as pd
df = pd.read_csv('FEguid.txt')

print '              '
print 'All companies sorted:'
print df.sort('Company').Company
print '              '
print 'All Dodge models:'
print df[df['Line'] == 'Dodge']
print '              '
print 'Mean MPG and annual cost per company'
print df.groupby('Company').mean()
print '              '
print 'Mean MPG and annual cost per car type'
print df.groupby('Type').mean()

输出:

              
All companies sorted:
2    Chrysler Group LLC
3    Chrysler Group LLC
4    Ford Motor Company
5    Ford Motor Company
1        General Motors
0        General Motors
Name: Company, dtype: object
              
All Dodge models:
              Company   Line         Type  MPG  Annual Cost          Category
2  Chrysler Group LLC  Dodge  Durango AWD   19         2750  Standard SUV 4WD
3  Chrysler Group LLC  Dodge  Durango AWD   16         3400  Standard SUV 4WD
              
Mean MPG and annual cost per company
                     MPG  Annual Cost
Company
Chrysler Group LLC  17.5         3075
Ford Motor Company  18.0         2925
General Motors      18.5         2825
              
Mean MPG and annual cost per car type
                  MPG  Annual Cost
Type
Durango AWD      17.5         3075
EXPLORER AWD     19.0         2750
Expedition 4WD   17.0         3100
K1500 TAHOE 4WD  18.0         2900
TRAVERSE AWD     19.0         2750

相关问题 更多 >

    热门问题