我有两个不同长度的字符串列表:
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循环中的字符串中。我使用的是Python 3.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
答案 0 :(得分:2)
对于问题的第一部分,请使用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',
...
答案 1 :(得分:1)
您可以使用词典理解:
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']}
这会创建一个字典,其中包含来自x
的键k
和值v
。
答案 2 :(得分:0)
词典理解会做:
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',]}
答案 3 :(得分:0)
您完全使用了错误的方法:zip
仅用于对应的对,为您提供(a z) (b y) (c x)
等等,而不提供其他配对。
是否有某些原因需要多次生成?如果没有,这是itertools.product
的作业,而不是zip
。
from itertools import product
k = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
v = ['z', 'y', 'x', 'w',]
for pair in product(k, v):
print("some string " + ' '.join(pair))
输出:
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 g x
some string g w