Python3: как сгенерировать таблицу в соответствии с словарем Tuple

Я действительно посмотрел на множество идей, единственное решение было таким образом (работает с разными провайдерами электронной почты):

            try
        {
            ViewProgressbar("Try to connect mail-server...", progressBar1.Value = 20);
            string host = dsProvider.Rows[y]["POP_hostOut"].ToString();
            int port = int.Parse(dsProvider.Rows[y]["POP_portOut"].ToString());  //587
            string[] email = von1.Split('@');
            string userName = (dsProvider.Rows[y]["login"].ToString() == "email[0]@email[1]")? email[0]+"@"+email[1] : email[0];
            string password = layer.getUserPassword(listSender.SelectedValue.ToString());
            SmtpClient client = new SmtpClient(host, port);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            //A idea from MSDN but it not works. You got the "The server response was: 5.5.1 Authentication Required."
            //System.Net.NetworkCredential myCreds = new System.Net.NetworkCredential(userName, password, host);
            //System.Net.CredentialCache cache = new System.Net.CredentialCache();
            //cache.Add(host, port, "NTLM", myCreds);
            ///cache.GetCredential(host, port, "NTLM");   //NTLM
            client.Credentials = new System.Net.NetworkCredential(userName, password);
            client.Host = host;
            client.Port = port;
            client.EnableSsl = true;
            client.Send(message);
            ViewProgressbar();
        }
        catch (SmtpException ex)...
1
задан fuglede 13 July 2018 в 16:07
поделиться

3 ответа

Более общее решение, избегая жесткого кода и заполнения «NA» для отсутствующих данных:

my_dict = {('A1', 'A2'): 0.6, ('A3', 'A1'): 1, ('A2', 'A2'): 1, ('A2', 'A1'): 0.3}

labs = []
for key in my_dict.keys():
    for k in key:
        if k not in labs:
            labs.append(k)
labs = sorted(labs)

print("Table\t" + "\t\t".join(labs))
for i in labs:
    print(i, end="\t\t")
    for j in labs:
        try:
            print(my_dict[(i, j)], end="\t\t")
        except KeyError:
            print("NA", end="\t\t")
    print()

Выход:

Table   A1      A2      A3
A1      NA      0.6     NA      
A2      0.3     1       NA      
A3      1       NA      NA      
1
ответ дан Kohki Mametani 17 August 2018 в 12:49
поделиться

Вы можете использовать понимание списка:

my_dict = {('A1', 'A2'): 0.6, ('A1', 'A1'): 1, ('A2', 'A2'): 1, ('A2', 'A1'): 0.3}
table = [[[c for [d1, d2], c in my_dict.items() if f'A{i}' == d2 and f'A{b}' == d1][0] 
   for i in range(1, 3)] for b in range(1, 3)]
top = 'table  {}'.format(' '.join(f'A{i}' for i in range(1, len(max(table, key=len))+1)))
final = '{}\n{}'.format(top, '\n'.join(f'A{i}    {" ".join(map(str, a))}' for i, a in enumerate(table)))

Выход:

table  A1 A2
A0    1 0.6
A1    0.3 1
0
ответ дан Ajax1234 17 August 2018 в 12:49
поделиться
print("Table  A1   A2")
for i in ['A1','A2']:
    print(i, end= "     ")
    for j in ['A1','A2']:
        print(my_dict[(i,j)], end = "   ")
    print()

Выход

Table  A1   A2
A1     1   0.6   
A2     0.3   1  
0
ответ дан Mufeed 17 August 2018 в 12:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: