Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用dict理解有条件地合并两个词典_Python_Python 2.7_Dictionary_Dictionary Comprehension - Fatal编程技术网

Python 使用dict理解有条件地合并两个词典

Python 使用dict理解有条件地合并两个词典,python,python-2.7,dictionary,dictionary-comprehension,Python,Python 2.7,Dictionary,Dictionary Comprehension,我想要两个基于d1值和d2键的子串的字典。结果字典的键为d1,对应的值为d2 d1 = {'web02': '23', 'web01': '50'} d2 = {'server/dc-50': 's01.local', 'server/dc-23': 's02.local'} 将导致={web01:s01.local,web02:s02.local}我想这就是您需要的: result = {k1:v2 for k1,v1 in d1.items() for k2,v2 in d2.items(

我想要两个基于d1值和d2键的子串的字典。结果字典的键为d1,对应的值为d2

d1 = {'web02': '23', 'web01': '50'}
d2 = {'server/dc-50': 's01.local', 'server/dc-23': 's02.local'}

将导致=
{web01:s01.local,web02:s02.local}

我想这就是您需要的:

result = {k1:v2 for k1,v1 in d1.items() for k2,v2 in d2.items() if v1 in k2}
输出

{'web02': 's02.local', 'web01': 's01.local'}

这是在没有嵌套循环的情况下通过使用字符串格式获取值来完成的:

data = {k: d2['server/dc-' + v] for k, v in d1.items()}
印刷品:

{'web02': 's02.local', 'web01': 's01.local'}

我不太清楚你在这里的目的是什么。这两个格言有什么关系?除了
d2
的键似乎不相关外,您还编写了“d2键的子字符串”。你是说“价值”吗?是什么让你认为你需要使用口述理解?@ArkistarvhKltzuonstev他们是,更正了d1.items()中k,v的
{k:d2['server/dc-{}.format(v)]
?@iguanaaut d2的键包含在d1的值中“d2的键包含在d1的值中”对我来说似乎是另一种方式。但基于什么关系?它们都包含子字符串“01”?根据什么标准将一个dict的键和另一个dict的值关联起来?只是它们有任何共同的非空子字符串,或者什么?这可能有助于解释更多关于你需要做什么以及为什么,。