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