【问题标题】:create dictionary in python using two sets [closed]使用两组在python中创建字典[关闭]
【发布时间】:2014-10-09 13:32:39
【问题描述】:

我必须合并两个集合:

colors={'GREEN','YELLOW','PURPLE','BLUE','RED'}

children={'uri','ron','sigalit','ruti','alon'}

使用子元素作为键进入单个字典。 我不允许使用循环,也不允许使用索引。 关于如何做到这一点的任何线索?

【问题讨论】:

  • @Cyber​​ 您使用的是 Python 2.6 或更早版本吗?
  • @Cyber​​ 是的,它也被移植回 Python 2.7。
  • 如果您关心哪种颜色映射到哪个子项,那么您不能使用集合:它们没有定义的顺序。
  • @Chen Davidov:也许你可以解释为什么它们必须是集合,以及为什么你不能使用循环或索引?
  • @ChenDavidov 对不起,但如果你的老师说要使用集合,并且必须按照给定的顺序匹配,那么你的老师不知道他们在说什么。它不会起作用。

标签: python python-2.7 set


【解决方案1】:

您可以使用dict 理解。

children = {'uri','ron','sigalit','ruti','alon'}
colors = {'GREEN','YELLOW','PURPLE','BLUE','RED'}

>>> {x:y for x,y in zip(children,colors)}
{'uri': 'GREEN', 'ruti': 'BLUE', 'ron': 'YELLOW', 'alon': 'RED', 'sigalit': 'PURPLE'}

【讨论】:

  • 它们必须保持原样
  • @Chen Davidov i'm not allowed to use loops。字典理解在里面使用一个循环。
【解决方案2】:
In [1]: colors={'GREEN','YELLOW','PURPLE','BLUE','RED'} 

In [2]: children={'uri','ron','sigalit','ruti','alon'}

In [3]: dict(zip(children, colors))
Out[3]: 
{'alon': 'GREEN',
 'ron': 'RED',
 'ruti': 'PURPLE',
 'sigalit': 'BLUE',
 'uri': 'YELLOW'}

【讨论】:

  • 集合的顺序不保留
  • @ChenDavidov 套装没有订单,所以我认为这不可能
  • 为什么不能使用 list(colors)list(children) ? Set 是无序集合
  • @ChenDavidov:因为集合是无序的,所以对 that 无能为力。
  • @ChenDavidov 要么你的老师很困惑,要么你很困惑。这是不可能的。
猜你喜欢
  • 2015-01-23
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 2012-11-12
相关资源
最近更新 更多