重要提示:如果 value 是一个列表,那么我想为该 key 和其中的每个项目获取多个 key, value 元组列表。字典中的值将是多种类型,至少包括字符串、整数和列表。
我在下面有一个解决方案,但我想知道是否有更简洁的方法来做到这一点。
# Sample data
d = {'key1': 'string1',
'key2': 15,
'key3': ['item1', 'item2', 'item3', 'item4']}
# This code does what I want
parameters = []
for k, v in d.iteritems():
if isinstance(v, str):
parameters.append((k ,v))
elif isinstance(v, int):
parameters.append((k, v))
elif isinstance(v, list):
for x,y in zip(itertools.repeat(k), v):
parameters.append((x, y))
else:
continue
parameters
# [('key1', 'string1'),
# ('key2', 15),
# ('key3', 'item1'),
# ('key3', 'item2'),
# ('key3', 'item3'),
# ('key3', 'item4')]
请您参考如下方法:
我喜欢列表推导式的可读性。另外,我不明白为什么你需要一个单独的字符串和整数语句。要么你有一个列表,要么没有。
parameters = []
for k, v in d.iteritems():
if isinstance(v, list):
parameters.extend([(k, i) for i in v])
else:
parameters.append((k, v))
结果:
>>> parameters
[('key3', 'item1'), ('key3', 'item2'), ('key3', 'item3'), ('key3', 'item4'), ('key2', 15), ('key1', 'string1')]
