Болтунья - PullRequest
       7

Болтунья

0 голосов
/ 06 декабря 2018

Есть ли простой способ сделать диктовку, где буквы - это ключи, а случайные буквы - это значения?как это:

{'a':'z','b':'x','c':'c'}

Ответы [ 4 ]

0 голосов
/ 06 декабря 2018

Вы также можете написать логику, подобную следующей:

import string   # to access lower case characters
import random   # to access  the method `choice()`

letters = string.ascii_lowercase  # get the lower cases ascii letters
keys = [i for i in letters]       # create a list of lower case letter

# generate a list of random letters.
values = [random.choice(letters) for i in range(len(letters))]

# The actual dictionary
mydict = {key: value for key, value in zip(keys, values)}
0 голосов
/ 06 декабря 2018

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

from string import ascii_uppercase
import random
from collections import OrderedDict
OrderedDict((k, random.choice(string.letters)), k in enumerate(ascii_uppercase))
0 голосов
/ 06 декабря 2018

Трудно сказать точно, что вы хотите от вашего вопроса, но я подозреваю, что вам нужно сопоставление букв с перемешанным набором букв.Таким образом, каждая буква будет соответствовать другой букве;никакие две буквы не будут сопоставлены с одной и той же буквой.

from string import ascii_lowercase
import random
letters = [x for x in ascii_lowercase]
random.shuffle(letters)
letter_mapping = {k: v for k, v in zip(ascii_lowercase, letters)}

Мы импортируем строчные буквы из строки и случайный модуль.Третья строка преобразует строку ascii_lowercase в список, который мы затем перетасовываем методом random.shuffle.Это перемешивает список на месте, поэтому у него нет возвращаемого значения.Наконец, мы объединяем два списка вместе, чтобы получить список из ('a', 's') кортежей, где первая буква берется из списка со случайным списком, а вторая берется из списка со случайным списком.Понимание словаря затем строит словарь из этих кортежей в виде пар ключ-значение.

0 голосов
/ 06 декабря 2018

Да.Есть.

import string,random
a_dict = {letter:random.choice(string.ascii_lowercase) for letter in string.ascii_lowercase}

print (a_dict)

, и я получаю

{'o': 'c', 'w': 'i', 'b': 'w', 'd': 'j', 'c': 'g', 'z': 'b',
 't': 'c', 'y': 'q', 'n': 'f', 'j': 'p', 'e': 'x', 'q': 'y',
 'f': 'j', 'v': 'a', 'h': 'm', 'u': 'y', 'p': 't', 'l': 'f',
 'i': 'e', 'm': 'o', 'g': 'b', 's': 'n', 'a': 'h', 'r': 'n',
 'k': 'o', 'x': 'a'}

, но вы можете получить другой результат (который является полностью нормальным и полностью ожидаемым).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...