Convert input to variable

Viewed 33

I have a code:

rock = [['rock', 'lightning'], ['rock', 'gun'], ['rock', 'air'], ['rock', 'water'], ['rock', 'dragon'], ['rock', 'paper'], ['rock', 'devil']]
gun = [['gun', 'lightning'], ['gun', 'sponge'], ['gun', 'air'], ['gun', 'water'], ['gun', 'dragon'], ['gun', 'paper'], ['gun', 'devil']]
lightning = [['lightning', 'wolf'], ['lightning', 'sponge'], ['lightning', 'air'], ['lightning', 'water'], ['lightning', 'dragon'], ['lightning', 'paper'], ['lightning', 'devil']]
devil = [['devil', 'wolf'], ['devil', 'sponge'], ['devil', 'air'], ['devil', 'water'], ['devil', 'dragon'], ['devil', 'paper'], ['devil', 'tree']]
dragon = [['dragon', 'wolf'], ['dragon', 'sponge'], ['dragon', 'air'], ['dragon', 'water'], ['dragon', 'human'], ['dragon', 'paper'], ['dragon', 'tree']]
water = [['water', 'wolf'], ['water', 'sponge'], ['water', 'air'], ['water', 'snake'], ['water', 'human'], ['water', 'paper'], ['water', 'tree']]
air = [['air', 'wolf'], ['air', 'sponge'], ['air', 'scissors'], ['air', 'snake'], ['air', 'human'], ['air', 'paper'], ['air', 'tree']]
paper = [['paper', 'wolf'], ['paper', 'sponge'], ['paper', 'scissors'], ['paper', 'snake'], ['paper', 'human'], ['paper', 'fire'], ['paper', 'tree']]
sponge = [['sponge', 'wolf'], ['sponge', 'rock'], ['sponge', 'scissors'], ['sponge', 'snake'], ['sponge', 'human'], ['sponge', 'fire'], ['sponge', 'tree']]
wolf = [['wolf', 'gun'], ['wolf', 'rock'], ['wolf', 'scissors'], ['wolf', 'snake'], ['wolf', 'human'], ['wolf', 'fire'], ['wolf', 'tree']]
tree = [['tree', 'gun'], ['tree', 'rock'], ['tree', 'scissors'], ['tree', 'snake'], ['tree', 'human'], ['tree', 'fire'], ['tree', 'lightning']]
human = [['human', 'gun'], ['human', 'rock'], ['human', 'scissors'], ['human', 'snake'], ['human', 'devil'], ['human', 'fire'], ['human', 'lightning']]
snake = [['snake', 'gun'], ['snake', 'rock'], ['snake', 'scissors'], ['snake', 'dragon'], ['snake', 'devil'], ['snake', 'fire'], ['snake', 'lightning']]
scissors = [['scissors', 'gun'], ['scissors', 'rock'], ['scissors', 'water'], ['scissors', 'dragon'], ['scissors', 'devil'], ['scissors', 'fire'], ['scissors', 'lightning']]
fire = [['fire', 'lightning'], ['fire', 'gun'], ['fire', 'air'], ['fire', 'water'], ['fire', 'dragon'], ['fire', 'rock'], ['fire', 'devil']]

user_choice = input().split(",")

print(*[user_choice[0]], *[user_choice[1]], sep=", ")

I`m trying to get a big list according to user input. So if user input "rock, gun", the list should look like this:

[['rock', 'lightning'], ['rock', 'gun'], ['rock', 'air'], ['rock', 'water'], ['rock', 'dragon'], ['rock', 'paper'], ['rock', 'devil'], ['gun', 'lightning'], ['gun', 'sponge'], ['gun', 'air'], ['gun', 'water'], ['gun', 'dragon'], ['gun', 'paper'], ['gun', 'devil']]

User can input as many values as he wants. How can I make this?

1 Answers

You could use a dictionary instead and do it like this:

d = {
    'scissors': [['scissors', 'gun'], ['scissors', 'rock'], ['scissors', 'water'], ['scissors', 'lightning']],
    'fire': [['fire', 'lightning'], ['fire', 'gun'], ['fire', 'air'], ['fire', 'water']]
}

user_choice = input().split(",")
print(d[user_choice[0]]+d[user_choice[1]])

Edit

If there will be more input values an effective way to merge all sublists is using itertools module like so:

import itertools

# define dictionary etc...

user_choice = input().split(",")
l = itertools.chain([d[choice] for choice in user_choice])
print(list(l))
Related