[英]Finding a value with the highest rank
我有类别
Rank Fruits: Vegetable: Years:
1 Apple Lettuce 1900-1909
2 Pineapple Carrot 1900-1909
3 Orange Potato 1900-1909
4 Banana Beans 1900-1909
Rank Fruits: Vegetable: Years:
1 Banana Carrot 1910-1919
2 Orange Potato 1910-1919
3 Apple Beans 1910-1919
4 Pineapple Lettuce 1910-1919
这是我上面给出的数据。 我想找到什么时候水果香蕉最受欢迎(当排名最接近1时)。 我还需要找到胡萝卜最受欢迎的时候。
例如,我需要它来显示Carrot的结果将是1910-1919,Banana将是1910-1919。
几个小时以来我一直在搞乱这个问题。 我已经尝试将它们放入集合并使用键和值进行配置,但我没有做过任何工作。 我真的很感激帮助。 谢谢!
def getHighRank(data):
nameSet=()
nameList=[]
for names in data:
nameList.append[1]
nameList.append[2]
这就是我到目前为止所拥有的。 我尝试将水果和蔬菜装入一个清单。 我正在考虑将其转换为一套,但我现在对于该做什么一无所知。
>>> d = {}
>>> with open('test.txt') as f:
print f.read() # shows the file structure
Rank Fruits: Vegetable: Years:
1 Apple Lettuce 1900-1909
2 Pineapple Carrot 1900-1909
3 Orange Potato 1900-1909
4 Banana Beans 1900-1909
Rank Fruits: Vegetable: Years:
1 Banana Carrot 1910-1919
2 Orange Potato 1910-1919
3 Apple Beans 1910-1919
4 Pineapple Lettuce 1910-1919
>>> with open('test.txt') as f:
for line in f:
try:
rank, fruit, vegetable, year = line.split()
for k in (fruit, vegetable): # for both the fruit and veg
t = (rank, year) # tuple of rank and year
d[k] = min(d.get(k, t), t) # set it to the min (rank, year)
except: # skip headers
pass
>>> d['Apple'] # fast lookup
('1', '1900-1909')
>>> d['Apple'][1]
'1900-1909'
>>> d['Carrot'][1]
'1910-1919'
>>> d['Banana'][1]
'1910-1919'
这是你如何得到"Carrot"
的结果。 你应该能够从那里继续:
with open('filename') as f:
print min(row.split() for row in f if row[:1].isdigit()
and 'Carrot' in row)[3]
# prints: 1910-1919
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.