首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典组合-键和值的不等数

字典组合-键和值的不等数
EN

Stack Overflow用户
提问于 2016-09-20 17:33:21
回答 3查看 127关注 0票数 1

我要打印本词典的所有键和值的唯一组合:

代码语言:javascript
复制
items = {'a':[10,100,1000],'b':[11,110],'c':[12,120]}

用密码,

代码语言:javascript
复制
for key, value in items.items():
    print(key,value)

我收到以下输出:

代码语言:javascript
复制
b [11, 110]
c [12, 120]
a [10, 100, 1000]

我想根据字典得出以下结果:

代码语言:javascript
复制
b 11
b 110
c 12
c 120
a 10
a 100
a 1000

键值组合的顺序并不重要,但结果应该保持这种关系。与往常一样,任何与此问题相关的建议资源和/或搜索条件都将受到赞赏。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-20 17:35:57

你真的很亲密:

代码语言:javascript
复制
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))

产出:

代码语言:javascript
复制
a 10
a 100
a 1000
c 12
c 120
b 11
b 110

请注意,您可以使用for k,vl in sorted(items.items()):打印排序顺序(a,b,c)中的键,内部列表也是如此:

代码语言:javascript
复制
# 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))

产出:

代码语言:javascript
复制
a 10
a 100
a 1000
b 11
b 110
c 12
c 120
票数 1
EN

Stack Overflow用户

发布于 2016-09-20 17:45:42

或者简单地说:

代码语言:javascript
复制
items = {'a':[10,100,1000],'b':[11,110],'c':[12,120]}

for key, value in items.items():
    for v in value :
        print(key,v)
票数 2
EN

Stack Overflow用户

发布于 2016-09-20 17:39:34

使用itertools.chain.from_iterables列表理解,您可以将其“扁平化”成一个元组列表:

代码语言:javascript
复制
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)]

因此,做任何你想做的事情都很容易,比如打印它:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39600405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档