【问题标题】:Best way to determine the equality of two data sets in python?在python中确定两个数据集是否相等的最佳方法?
【发布时间】:2017-02-08 11:07:12
【问题描述】:

您知道实现与此相同结果的更简单方法吗? 我有这个代码:

color1 = input("Color 1: ")
color2 = input("Color 2: ")

if ((color1=="blue" and color2=="yellow") or (color1=="yellow" and color2=="blue")):
            print("{0} + {1} = Green".format(color1, color2))

我也试过这个:

if (color1 + color2 =="blueyellow" or color1 + color2 =="yellowblue")

【问题讨论】:

  • 虽然Code Review 可能是提出这类问题的好地方,但我们应该改掉向那里发送问题的习惯。请阅读this 元帖子进行澄清。
  • 请停止引用代码审查。阅读我在评论中发布的链接,了解为什么我们需要停止这样做。
  • set([color1, color2]) == set(["yellow", "blue"])

标签: python python-3.x if-statement conditional-statements simplify


【解决方案1】:

您可以使用sets 进行比较。

两个集合相等当且仅当每个集合的每个元素都包含在另一个集合中

In [35]: color1 = "blue"

In [36]: color2 = "yellow"

In [37]: {color1, color2} == {"blue", "yellow"}
Out[37]: True

In [38]: {color2, color1} == {"blue", "yellow"}
Out[38]: True

【讨论】:

    【解决方案2】:

    不要错过更大的画面。这是解决一般问题的更好方法。

    如果您定义“混合”字典,您可以在其中将混合颜色作为键,将生成的颜色作为值。

    实现的一个想法是使用本质上不可变的frozensets 作为映射键:

    mixes = {
        frozenset(['blue', 'yellow']): 'green'
    }
    
    color1 = input("Color 1: ")
    color2 = input("Color 2: ")
    
    mix = frozenset([color1, color2])
    if mix in mixes:
        print("{0} + {1} = {2}".format(color1, color2, mixes[mix]))
    

    通过这种方式,您可以轻松地扩展解决方案,添加不同的组合,而无需多个 if/else 嵌套条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      相关资源
      最近更新 更多