Вы на правильном пути, и я действительно сделал то, что вы тоже ищете. Однако вместо того, чтобы просто передавать строку в вашу функцию, я передаю объект SQL Command ... Таким образом, вы можете правильно построить все свои команды и параметры, а затем сказать ... здесь, запустите это, это готов к работе. Что-то вроде
public static DataTable SqlDataTable(SqlCommand cmd)
{
using (SqlConnection conn = new SqlConnection(DatabaseConnectionString))
{
cmd.Connection = conn; // store your connection to the command object..
cmd.Connection.Open();
DataTable TempTable = new DataTable();
TempTable.Load(cmd.ExecuteReader());
return TempTable;
}
}
public DataTable GetMyCustomers(string likeName)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from SomeTable where LastName like "@someParm%";
cmd.Parameters.Add( "whateverParm", likeName ); // don't have SQL with me now, guessing syntax
// so now your SQL Command is all built with parameters and ready to go.
return SqlDataTable( cmd );
}
Сначала создайте словарь, который отображает каждый термин на его id . Затем используйте словарь для создания желаемых списков:
from collections import Counter
a=['a','a','a','a','b','a','b','a','b','a','b','a','b','a','b','a','b','c','c','c','c','c','c','c','c','d','d','e']
b=['a','a','b','a','b','a','b','a','b','d','e']
aCounter=Counter(a)
bCounter=Counter(b)
v=sorted(aCounter.keys()|bCounter.keys())
idDict={item:i for i,item in enumerate(v) }
bresult=[(idDict[item[0]],item[0],item[1]) for item in bCounter.items()]
aresult=[(idDict[item[0]],item[0],item[1]) for item in aCounter.items() ]
print(bresult)
print(aresult)
Вывод:
[(0, «a», 5), (1, «b», 4), (3, «d», 1), (4, «e», 1)]
blockquote>
[(0, «a», 10), (1, «b», 7), (2, «c», 8), (3, «d», 2), (4, «e», 1) ]Объединение выполняется с использованием | оператор. используйте sorted для присвоения id = 0 для 'a'