Pythonic将两个不同长度的列表压缩到字典中

2024-10-01 05:06:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同长度的字符串列表:

k = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
v = ['z', 'y', 'x', 'w',]
dict = {}

我希望有以下输出:

{'a': ['z', 'y', 'x', 'w',], 'b': ['z', 'y', 'x', 'w',], 'c': ['z', 'y', 'x', 'w',], 'd': ['z', 'y', 'x', 'w',], 'e': ['z', 'y', 'x', 'w',], 'f': ['z', 'y', 'x', 'w',], 'g': ['z', 'y', 'x', 'w',]}    

我得到的最接近的结果是:

{key: [key, value] for key, value in zip(k, v)}

以及

(kvalue,vvalue) for kkey, kvalue in enumerate(k) for vkey, vvalue in enumerate(v)

这样做的最终目的是使用键、值对将包含的字符串插入到单独for循环中的字符串中。我使用的是python3.6。你知道吗

伪代码:

for filenames in directory:
    var = 'some string' + each key/value pairing
    print(var)

>>> some string a z
>>> some string a y
>>> some string a x
>>> some string a w
>>> some string b z
>>> some string b y
>>> some string b x
>>> some string b w
>>> some string c z
>>> some string c y
>>> some string c x
>>> some string c w
>>> some string d z
>>> some string d y
>>> some string d x
>>> some string d w
>>> some string e z
>>> some string e y
>>> some string e x
>>> some string e w
>>> some string f z
>>> some string f y
>>> some string f x
>>> some string f w
>>> some string g z
>>> some string g y
>>> some string g x
>>> some string g w

Tags: key字符串in列表forstringvaluevar
3条回答

对于问题的第一部分,请使用dict.fromkeys()

k = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
v = ['z', 'y', 'x', 'w',]
d = dict.fromkeys(k, v)

输出:

{'a': ['z', 'y', 'x', 'w'],
 'b': ['z', 'y', 'x', 'w'],
 'c': ['z', 'y', 'x', 'w'],
 'd': ['z', 'y', 'x', 'w'],
 'e': ['z', 'y', 'x', 'w'],
 'f': ['z', 'y', 'x', 'w'],
 'g': ['z', 'y', 'x', 'w']}

对于第二部分,实际上不需要第一部分,使用itertools.product

from itertools import product

k = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
v = ['z', 'y', 'x', 'w',]

out = ['some string {} {}'.format(key, val) for key, val in product(k, v)]

输出:

['some string a z',
 'some string a y',
 'some string a x',
 'some string a w',
 'some string b z',
 'some string b y',
 'some string b x',
 'some string b w',
 'some string c z',
 'some string c y',
 'some string c x',
 'some string c w',
 'some string d z',
 'some string d y',
 'some string d x',
 'some string d w',
...

你可以使用字典理解:

result = {x: v for x in k}
print(result)
{'a': ['z', 'y', 'x', 'w'], 'b': ['z', 'y', 'x', 'w'], 'c': ['z', 'y', 'x', 'w'], 'd': ['z', 'y', 'x', 'w'], 'e': ['z', 'y', 'x', 'w'], 'f': ['z', 'y', 'x', 'w'], 'g': ['z', 'y', 'x', 'w']}

这将创建一个字典,其中包含来自k的键x和值v。你知道吗

一本字典可以:

k = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
v = ['z', 'y', 'x', 'w',]
print({key: v for key in k})

# {'a': ['z', 'y', 'x', 'w',], 'b': ['z', 'y', 'x', 'w',], 'c': ['z', 'y', 'x', 'w',], 'd': ['z', 'y', 'x', 'w',], 'e': ['z', 'y', 'x', 'w',], 'f': ['z', 'y', 'x', 'w',], 'g': ['z', 'y', 'x', 'w',]} 

相关问题 更多 >