我想打印此词典的所有键和值的唯一组合:
items = {'a':[10,100,1000],'b':[11,110],'c':[12,120]}
使用代码,
for key, value in items.items():
print(key,value)
我收到以下输出:
b [11, 110]
c [12, 120]
a [10, 100, 1000]
我想在字典中产生以下结果:
b 11
b 110
c 12
c 120
a 10
a 100
a 1000
键值组合的顺序并不重要,但结果应保留关系。与往常一样,任何与此问题相关的推荐资源和/或搜索字词都将受到赞赏。
答案 0 :(得分:2)
或者简单地说:
items = {'a':[10,100,1000],'b':[11,110],'c':[12,120]}
for key, value in items.items():
for v in value :
print(key,v)
答案 1 :(得分:1)
你真的很亲密:
items = {'a':[10,100,1000],'b':[11,110],'c':[12,120]}
# iterate on key/items couple
for k,vl in items.items():
# iterate on all values of the list
for v in vl:
# print with a simple format
print("{} {}".format(k,v))
输出:
a 10
a 100
a 1000
c 12
c 120
b 11
b 110
请注意,您可以使用for k,vl in sorted(items.items()):
按排序顺序(a,b,c)
打印密钥,内部列表也是如此:
# iterate on key/items couple
for k,vl in sorted(items.items()):
# iterate on all values of the list
for v in sorted(vl):
# print with a simple format
print("{} {}".format(k,v))
输出:
a 10
a 100
a 1000
b 11
b 110
c 12
c 120
答案 2 :(得分:1)
使用itertools.chain.from_iterables
和list comprehension,您可以"展平"这是一个元组列表:
In [27]: import itertools
In [28]: list(itertools.chain.from_iterable([[(item_[0], v) for v in item_[1]] for item_ in items.items()]))
Out[28]:
[('a', 10),
('a', 100),
('a', 1000),
('c', 12),
('c', 120),
('b', 11),
('b', 110)]
通过这种方式,您可以轻松地执行任何您想要的操作:
In [29]: for k, v in itertools.chain.from_iterable([[(item_[0], v) for v in item_[1]] for item_ in items.items()]):
....: print k, v
....:
a 10
a 100
a 1000
c 12
c 120
b 11
b 110