【发布时间】:2015-01-27 14:44:37
【问题描述】:
我正在尝试反转包含字符串作为键和字符串列表作为值的字典项目:
dico = {'key1': [],
'key2': [],
'key3': ['value1', 'value1'],
'key4': ['value2', 'value2'],
'key5': ['value3'],
'key6': ['value1', 'value2', 'value3']}
new_dict = {}
for key, values in dico.items():
if values:
for value in values:
try:
if key not in new_dict[value]:
new_dict[value].append(key)
except KeyError:
new_dict[values[0]] = list(key)
else:
print('ERROR')
这是预期的结果:
#Expected
new_dict = {'value1': ['key3', 'key6'],
'value2': ['key4', 'key6'],
'value3': ['key5', 'key6']}
#Reality
new_dict = {'value1': ["k", "e", "y", "3", "k", "e", "y", "6"],
'value2': ["k", "e", "y", "4", "k", "e", "y", "6"],
'value3': ["k", "e", "y", "5", "k", "e", "y", "6"]}
我注意到如果我改变它:
new_dict[values[0]] = list(key)
这样:
new_dict[values[0]] = []
new_dict[values[0]].append(key)
它确实有效,但是否有另一种方法可以在一行中做到这一点?
【问题讨论】:
-
new_dict[values[0]] = [key]怎么样? -
这里的
pretty_dict是什么? -
请注意,
list('key1')的计算结果为['k', 'e', 'y', '1'],第二个实际计算结果为['key1'] -
与问题无关,但除非此处省略更多代码,否则您不需要
if values:检查。如果没有值,for 循环将不会运行。 -
感谢你们回复得如此迅速和准确。它帮助了我! :)
标签: python string list dictionary word