简体   繁体   English

有没有一种不那么奇怪的方法来生成这个虚拟数据?

[英]Is there a less oddball way to generate this dummy data?

Input: a list of word_types eg ["verb", "adjective", "name", "noun]输入:word_types 列表,例如 ["verb", "adjective", "name", "noun]

Desired output: a dictionary of three words for each letter-word_type combination arranged by word_type.期望输出:每个字母-word_type 组合的三个单词的字典,按 word_type 排列。

ie IE

{"verbs" : ["Averb1", "Averb2", "Averb3"], [Bverb1, ...], ..., "adjectives" : ["Aadjective1","Aadjectives2", "Aadjectives3"] ... etc {"verbs" : ["Averb1", "Averb2", "Averb3"], [Bverb1, ...], ..., "adjectives" : ["Aadjective1","Aadjectives2", "Aadjectives3"] .. 。 等等

Here's what I used to generate my data.这是我用来生成数据的内容。

import string
A_to_Z = list(string.ascii_uppercase)  #  list of letters a-z
lettered_word_types = ["verb", "adjective", "name", "noun"]

class Lexicon:
    def __init__(self, testing = True):
        if testing == True:
            for TYPE in lettered_word_types:
                setattr(self, TYPE + "s", [letter + TYPE for letter in A_to_Z])
        self.__dict__ = {key: [[element + "1", element + "2", element + "3"] for element in value] for key, value in self.__dict__.items()}


data = Lexicon().__dict__

The class serves no purpose, it simply obfuscates what you are doing.这个类没有任何意义,它只是混淆了你正在做的事情。 To transliterate your code to use a dict directly, you just need:要将您的代码音译为直接使用dict ,您只需要:

result = {}
for TYPE in lettered_word_types:
    result[TYPE + 's'] = [letter + TYPE for letter in A_to_Z]
result = {key: [[element + "1", element + "2", element + "3"] for element in value] for key, value in result.items()}

So, just to show that this is indeed equivalent:所以,只是为了表明这确实是等价的:

In [1]: import string
    ...: A_to_Z = list(string.ascii_uppercase)  #  list of letters a-z
    ...: lettered_word_types = ["verb", "adjective", "name", "noun"]
    ...:
    ...: class Lexicon:
    ...:     def __init__(self, testing = True):
    ...:         if testing == True:
    ...:             for TYPE in lettered_word_types:
    ...:                 setattr(self, TYPE + "s", [letter + TYPE for letter in A_to_Z])
    ...:         self.__dict__ = {key: [[element + "1", element + "2", element + "3"] for element in value] for key, value in self.__dict__.items()}
    ...:
    ...:
    ...: data = Lexicon().__dict__

In [2]: result = {}

In [3]: for TYPE in lettered_word_types:
    ...:     result[TYPE + 's'] = [letter + TYPE for letter in A_to_Z]
    ...:

In [4]: result = {key: [[element + "1", element + "2", element + "3"] for element in value] for key, value in result.items()}

In [5]: result == data
Out[5]: True

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM