Python 它是如何工作的。是否可以让它返回一个类似于['3','4','6']的列表,而不是字典?嗨,能解释一下你的代码吗?我不太明白如何使用它来获得结果。顺便问一下,“VAL”是什么?谢谢VAL是您的输入(列表列表)。至于代码本身,请仔细阅读dict理解,您将看到
Python 它是如何工作的。是否可以让它返回一个类似于['3','4','6']的列表,而不是字典?嗨,能解释一下你的代码吗?我不太明白如何使用它来获得结果。顺便问一下,“VAL”是什么?谢谢VAL是您的输入(列表列表)。至于代码本身,请仔细阅读dict理解,您将看到,python,list,data-manipulation,Python,List,Data Manipulation,它是如何工作的。是否可以让它返回一个类似于['3','4','6']的列表,而不是字典?嗨,能解释一下你的代码吗?我不太明白如何使用它来获得结果。顺便问一下,“VAL”是什么?谢谢VAL是您的输入(列表列表)。至于代码本身,请仔细阅读dict理解,您将看到它是如何工作的。是否可以让它返回一个类似于['3','4','6']的列表,而不是字典? l = [['A', 'aa', '1', '300'], ['A', 'ab', '2', '30'], ['A', 'ac', '
它是如何工作的。是否可以让它返回一个类似于
['3','4','6']
的列表,而不是字典?嗨,能解释一下你的代码吗?我不太明白如何使用它来获得结果。顺便问一下,“VAL”是什么?谢谢<代码>VAL是您的输入(列表列表)。至于代码本身,请仔细阅读dict理解,您将看到它是如何工作的。是否可以让它返回一个类似于['3','4','6']
的列表,而不是字典?
l = [['A', 'aa', '1', '300'],
['A', 'ab', '2', '30'],
['A', 'ac', '3', '60'],
['B', 'ba', '5', '50'],
['B', 'bb', '4', '10'],
['C', 'ca', '6', '50']]
[['A', 'ab', '3', '30'],
['B', 'bb', '4', '10'],
['C', 'ca', '6', '50']]
['3', '4', '6']
import pandas as pd
df = pd.DataFrame(l, columns=['u', 'w', 'y', 'z'])
df.set_index('u', inplace=True)
ll = []
for letter in df.index.unique():
ll.append((df.ix[letter, 'y'][-1]))
>> The slowest run took 27.86 times longer than the fastest.
>> This could mean that an intermediate result is being cached.
>> 1000000 loops, best of 3: 887 ns per loop
li = [l[i][0] for i in range(len(l))]
[l[j][2] for j in [''.join(li).rfind(i) for i in set(li)]]
%timeit li = [l[i][0] for i in range(len(l))]
%timeit [l[j][2] for j in [''.join(li).rfind(i) for i in set(li)]]
>> 1000000 loops, best of 3: 1.19 µs per loop
>> 100000 loops, best of 3: 2.57 µs per loop
%timeit [list(group)[-1][2] for key, group in itertools.groupby(l, lambda x: x[0])]
>> 100000 loops, best of 3: 5.11 µs per loop
def get_last_row(xs,q):
for i in range(len(xs)-1,-1,-1):
if xs[i][0] == q:
return xs[i][2]
def get_third_cols(xs):
third_cols = []
for q in ["A","B","C"]:
third_cols.append(get_last_row(xs,q))
return third_cols
print get_third_cols(xs)
l = [['A', 'aa', '1', '300'],
['A', 'ab', '2', '30'],
['A', 'ac', '3', '60'],
['B', 'ba', '5', '50'],
['B', 'bb', '4', '10'],
['C', 'ca', '6', '50']]
import itertools
for key, group in itertools.groupby(l, lambda x: x[0]):
print key, list(group)[-1]
def tidy(l):
tmp = []
prev_row = l[0]
for row in l:
if row[0] != prev_row[0]:
tmp.append(prev_row)
prev_row = row
tmp.append(prev_row)
return tmp
import operator
l = [['A', 'aa', '1', '300'],
['A', 'ab', '2', '30'],
['A', 'ac', '3', '60'],
['B', 'ba', '5', '50'],
['B', 'bb', '4', '10'],
['C', 'ca', '6', '50']]
def getLast(data, key, value):
f = operator.itemgetter(key,value)
store = dict()
keys = []
for row in data:
key, value = f(row)
if key not in store:
keys.append(key)
store[key] = value
return [store[k] for k in keys]
%timeit getLast(l,0,2)
The slowest run took 9.44 times longer than the fastest. This could mean that an intermediate result is being cached
100000 loops, best of 3: 2.85 µs per loop
['3', '4', '6']