-2

In Python, how can we assign multiple dictionary keys the same value. I tried something below but it's not working.

server = {'server1','server2': 'abc@xyz.com', 'server3','server4':'pqr@xyz.com'}

3 Answers3

2

For example:

s = "the_value" # the value you want for the keys below
l = ["name", "age", "address"] # keys
d = {} # initiating an empty dictionary
for item in l:
    d[item] = s

This should print

{'name': 'the_value', 'age': 'the_value', 'address': 'the_value'}
Patrick Artner
  • 50,409
  • 9
  • 43
  • 69
Ajay Shah
  • 414
  • 5
  • 10
0

You could use tuples as keys but then it is difficult to find the dictionary entry corresponding to a single value

server = {('server1','server2','serverX'): 'abc@xyz.com', \
          ('server3','server4'):'pqr@xyz.com'}  

Note: you can do that because tuples are hashable.

This makes only sense if you want to query the dictionary by exactly such tuples, for instance:

server[('server3', 'server4')]                                                                                                                                                
# Out: 'pqr@xyz.com'
user2314737
  • 27,088
  • 20
  • 102
  • 114
0

If you order your inputs as list of tuples, where each tuple is the value and a list of servers, you can use a nested list comprehension to create your dictionary:

from pprint import pprint

# arange your inputdata as tuples of ("value" to be set, list of servers)
# data = [ (f"login_{v}",[f"server_{v}{10+w}" for w in range(3)]) for v in range(5)]

data =  [ ('login_0', ['server_010', 'server_011', 'server_012']),
          ('login_1', ['server_110', 'server_111', 'server_112']),
          ('login_2', ['server_210', 'server_211', 'server_212']),
          ('login_3', ['server_310', 'server_311', 'server_312']),
          ('login_4', ['server_410', 'server_411', 'server_412']) ]

# create the dict using a nested list comprehension
d = {k:v for v,keys in data for k in keys}
pprint(d)

Output:

# of the created dict using a nested list comprehension
{'server_010': 'login_0',
 'server_011': 'login_0',
 'server_012': 'login_0',
 'server_110': 'login_1',
 'server_111': 'login_1',
 'server_112': 'login_1',
 'server_210': 'login_2',
 'server_211': 'login_2',
 'server_212': 'login_2',
 'server_310': 'login_3',
 'server_311': 'login_3',
 'server_312': 'login_3',
 'server_410': 'login_4',
 'server_411': 'login_4',
 'server_412': 'login_4'} 

See Explanation of how nested list comprehension works? if you do not know about those.

Patrick Artner
  • 50,409
  • 9
  • 43
  • 69