簡體   English   中英

如何為多個鍵分配相同的值 | python

[英]How can i assign multiple keys the same value | python

在 Python 中,我們如何為多個字典鍵分配相同的值。 我在下面嘗試了一些方法,但它不起作用。

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

例如:

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

這應該打印

{'name': 'the_value', 'age': 'the_value', 'address': 'the_value'}

您可以使用元組作為鍵,但很難找到對應於單個值的字典條目

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

注意:您可以這樣做,因為元組是hashable

這僅在您想通過完全這樣的元組查詢字典時才有意義,例如:

server[('server3', 'server4')]                                                                                                                                                
# Out: 'pqr@xyz.com'

如果您將輸入排序為元組列表,其中每個元組是值和服務器列表,則可以使用嵌套列表推導來創建字典:

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'} 

請參閱嵌套列表理解如何工作的解釋? 如果你不知道這些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM