2013-02-25 62 views
-6

在Python中,我有像下面的Python - 字典

{'key1': [L1, L2], 
'key2': [P1, P2], 
'key3': [T1], 
'key4': [V1]} 

所需的输出是

{'key1': [L1], 'key2': [P1], 'key3': [T1], 'key4': [V1]}, 
{'key1': [L2], 'key2': [P2], 'key3': [T1], 'key4': [V1]} 

任何帮助的字典!

+3

**什么您试过吗?** – nneonneo 2013-02-25 18:13:38

+1

print“{'key1':[L1],'key2':[P1],'key3':[T1],'key4':[V1]},\ n {'key1': [L2],'key2':[P2],'key3':[T1],'key4':[V1]}“满足您所声明的标准。你可以在你的问题上更明确吗? – 2013-02-25 18:18:16

回答

1
In [1]: d = {'key1': ['L1', 'L2'], 
'key2': ['P1', 'P2'], 
'key3': ['T1'], 
'key4': ['V1']} 

In [2]: [{k: [v[min(i, len(v)-1)]] for k, v in d.items()} 
    for i in range(max(map(len, d.values())))] 
Out[2]: 
[{'key1': ['L1'], 'key2': ['P1'], 'key3': ['T1'], 'key4': ['V1']}, 
{'key1': ['L2'], 'key2': ['P2'], 'key3': ['T1'], 'key4': ['V1']}] 
1
>>> # Let's suppose your dictionary looks something like 
>>> some_dict = {'key1': ['L1', 'L2'], 
'key2': ['P1', 'P2'], 
'key3': ['T1'], 
'key4': ['V1']} 
>>> #First determine the longest value sequence 
>>> max_len = len(max(some_dict.values(), key = len)) 
>>> #assimilate your tools 
>>> from itertools import izip, cycle, islice 
>>> #Create the value sequence 
>>> value = islice(izip(*(cycle(e) for e in some_dict.values())), max_len) 
>>> #recreate the dictionary 
>>> [dict(izip(some_dict.keys(), e)) for e in value] 
[{'key3': 'T1', 'key2': 'P1', 'key1': 'L1', 'key4': 'V1'}, {'key3': 'T1', 'key2': 'P2', 'key1': 'L2', 'key4': 'V1'}] 
>>> 

注意,万一顺序问题,使用OrderedDict,而不是内置的字典。

0

这不会得到正是你想要什么,因为我不知道你为什么会需要的['T1']['V1']副本再次:在

d = {'key1': ['L1', 'L2'], 
'key2': ['P1', 'P2'], 
'key3': ['T1'], 
'key4': ['V1']} 
print [{key:d[key][i] for key in d.keys() for i in range(len(d[key]))}, {key:d[key][i] for key in d.keys() for i in range(len(d[key])-1)}] 

结果:

[{'key3': 'T1', 'key2': 'P2', 'key1': 'L2', 'key4': 'V1'}, {'key2': 'P1', 'key1': 'L1'}]