Lors de l'écriture des valeurs de type de dictionnaire Python suivantes sous la forme d'un tableau dans une feuille de calcul.
    pattern = {
        'surface': ['Japon', 'Amérique', 'Angleterre'],
        'sexe': ['Homme', 'femme'],
        'la taille': ['100 cm ou plus', 'Moins de 100 cm']
    }
Si vous souhaitez créer un tableau dans lequel les éléments suivants sont multipliés dans une feuille de calcul,
| surface | sexe | la taille | |
|---|---|---|---|
| 1 | Japon | Homme | 100 cm ou plus | 
| 2 | Japon | Homme | Moins de 100 cm | 
| 3 | Japon | femme | 100 cm ou plus | 
| 4 | Japon | femme | Moins de 100 cm | 
| 5 | Amérique | Homme | 100 cm ou plus | 
| 6 | Amérique | Homme | Moins de 100 cm | 
| 7 | Amérique | femme | 100 cm ou plus | 
| 8 | Amérique | femme | Moins de 100 cm | 
| 9 | Angleterre | Homme | 100 cm ou plus | 
| 10 | Angleterre | Homme | Moins de 100 cm | 
| 11 | Angleterre | femme | 100 cm ou plus | 
| 12 | Angleterre | femme | Moins de 100 cm | 
Si vous écrivez ce qui suit en Python, ceux séparés par des virgules seront affichés.
from itertools import product
if __name__ == '__main__':
    pattern = {
        'surface': ['Japon', 'Amérique', 'Angleterre'],
        'sexe': ['Homme', 'femme'],
        'la taille': ['100 cm ou plus', 'Moins de 100 cm']
    }
    delimiter = ','
    result = delimiter + delimiter.join(pattern.keys()) + '\n'
    i = 0
    for item in product(*pattern.values()):
        i += 1
        result += str(i) + delimiter + delimiter.join(item) + '\n'
    print(result)
Collez-le dans une feuille de calcul pour créer un joli tableau.
,surface,sexe,la taille
1,Japon,Homme,100 cm ou plus
2,Japon,Homme,Moins de 100 cm
3,Japon,femme,100 cm ou plus
4,Japon,femme,Moins de 100 cm
5,Amérique,Homme,100 cm ou plus
6,Amérique,Homme,Moins de 100 cm
7,Amérique,femme,100 cm ou plus
8,Amérique,femme,Moins de 100 cm
9,Angleterre,Homme,100 cm ou plus
10,Angleterre,Homme,Moins de 100 cm
11,Angleterre,femme,100 cm ou plus
12,Angleterre,femme,Moins de 100 cm
itertools.product pour faire un croisement entre plusieurs listes. Puisque cette fonction est un argument de longueur variable, elle s'écrit * pattern.values () pour développer la liste.Si vous souhaitez créer le tableau suivant pour chaque élément et sa valeur dans le tableau de multiplication ci-dessus
| article | valeur | 
|---|---|
| surface | Japon | 
| Amérique | |
| Angleterre | |
| sexe | Homme | 
| femme | |
| la taille | 100 cm ou plus | 
| Moins de 100 cm | 
Si vous écrivez ce qui suit en Python, ceux séparés par des virgules seront affichés.
if __name__ == '__main__':
    pattern = {
        'surface': ['Japon', 'Amérique', 'Angleterre'],
        'sexe': ['Homme', 'femme'],
        'la taille': ['100 cm ou plus', 'Moins de 100 cm']
    }
    delimiter = ','
    result = ''
    for key, value in pattern.items():
        for index, item in enumerate(value):
            if index == 0:
                result += key
            result += delimiter + item + '\n'
    print(result)
Collez-le dans une feuille de calcul pour créer un joli tableau.
surface,Japon
,Amérique
,Angleterre
sexe,Homme
,femme
la taille,100 cm ou plus
,Moins de 100 cm
Si cela est transformé en un fichier Python qui peut être avancé de manière interactive, ce sera comme suit.
from itertools import product
def get_input(default: str = ''):
    value: str = input().rstrip("\n")
    if value:
        return value
    return default
def configure():
    print("""
Please configure
    delimiter [,]:
""")
    delimiter = get_input(',')
    print(f"""
    prefix:
    """)
    prefix = get_input()
    print(f"""
    suffix:
    """)
    suffix = get_input()
    return delimiter, prefix, suffix
def print_product_table(pattern: dict, delimiter: str, prefix: str, suffix: str):
    result = prefix + delimiter + delimiter.join(pattern.keys()) + suffix + '\n'
    i = 0
    for item in product(*pattern.values()):
        i += 1
        result += prefix + str(i) + delimiter + delimiter.join(item) + suffix + '\n'
    print(result)
def print_category_key_value(pattern, delimiter, prefix, suffix):
    result = ''
    for key, value in pattern.items():
        for index, item in enumerate(value):
            line = prefix
            if index == 0:
                line += key
            line += delimiter + item + suffix
            result += line.strip() + '\n'
    print(result)
if __name__ == '__main__':
    pattern = {
        'surface': ['Japon', 'Amérique', 'Angleterre'],
        'sexe': ['Homme', 'femme'],
        'la taille': ['100 cm ou plus', 'Moins de 100 cm']
    }
    print_pattern: int = None
    while True:
        print("""
Print dict structure.
Enter print pattern:
    1. Product table
    2. Category key-value
        """)
        print_pattern = int(get_input())
        if print_pattern in [1, 2]:
            break;
    delimiter, prefix, suffix = configure()
    if print_pattern == 1:
        print_product_table(pattern, delimiter, prefix, suffix)
    elif print_pattern == 2:
        print_category_key_value(pattern, delimiter, prefix, suffix)
Recommended Posts