Python:将多个值键入字典中的键/值对

时间:2018-10-04 14:29:19

标签: python pandas

这是我的输入字典:

dict = {"key1": [value1, value2], "key2": ["value3", "value4", "value5"]}

我需要以下结果:

[(key1, value1), (key1, value2), (key2, value3) ...]

如何在python中做到这一点?

我想用它来创建一个table1,以便通过“值”将其连接到table2。

5 个答案:

答案 0 :(得分:3)

自从标记pandas

s=pd.Series(d).apply(pd.Series).stack()
list(zip(s.index.get_level_values(0),s))
Out[869]: 
[('key1', 'value1'),
 ('key1', 'value2'),
 ('key2', 'value3'),
 ('key2', 'value4'),
 ('key2', 'value5')]

答案 1 :(得分:1)

如果您想要使用纯Python的方法:

[(k, inner) for k, v in dct.items() for inner in v]

[('key1', 'value1'),
 ('key1', 'value2'),
 ('key2', 'value3'),
 ('key2', 'value4'),
 ('key2', 'value5')]

我建议为字典使用名称dict,因为它会覆盖内置类型构造函数。

答案 2 :(得分:1)

首先单独在Python(3.6版之前)中意识到dict的命令是无序的。因此,结果元组列表中的顺序可能与字典的分配不同。

鉴于此,您可以执行以下操作:

di={"key1": ["value1", "value2"], "key2": ["value3", "value4", "value5"]}

result=[]
for k,li in di.items():
    for e in li:
        result.append((k,e))

答案 3 :(得分:0)

看起来您只想要这样简单的东西:

my_dict = {"key1": ["value1", "value2"], "key2": ["value3", "value4", "value5"]}

my_list = []

for my_key, value_list in my_dict.items():
    for value in value_list:
        my_list.append({my_key:value})

print(my_list)

输出:

[{'key1': 'value1'}, {'key1': 'value2'}, {'key2': 'value3'}, {'key2': 'value4'},
 {'key2': 'value5'}]

我特意将其保持为非常基本。迭代您的字典,迭代每个值列表,构建一个字典,然后将该字典追加到新列表中。有多种方法可以做到这一点,这只是一种非常易读/易于理解的选择。

答案 4 :(得分:0)

使用列表理解

l = [(i, j) for i in d for j in d[i]]    
# [('key1', 'value1'), ('key1', 'value2'), ('key2', 'value3'), ('key2', 'value4'), ('key2', 'value5')]