Thank you Peter. Silly mistakes 😀 On Jul 5, 2017 5:10 PM, "Peter Otten" <__pete...@web.de> wrote:
> shubham goyal wrote: > > > null=None > > x={'_udp_options': None, '_icmp_options': None, 'attribute_map': > > {'icmp_options': 'icmpOptions', 'protocol': 'protocol', 'source': > > {'source', > > 'tcp_options': 'tcpOptions', 'is_stateless': 'isStateless', > 'udp_options': > > 'udpOptions'}, '_is_stateless': False, 'swagger_types': {'icmp_options': > > 'IcmpOptions', 'protocol': 'str', 'source': 'str', 'tcp_options': > > 'TcpOptions', 'is_stateless': 'bool', 'udp_options': 'UdpOptions'}, > > '_protocol': '6', '_source': '0.0.4.0/24', '_tcp_options': { > > "destination_port_range": { > > "max": "22", > > "min": "22" > > }, > > "source_port_range": null > > }} > > > > y={'_udp_options': None, '_icmp_options': None, 'attribute_map': > > {'icmp_options': 'icmpOptions', 'protocol': 'protocol', 'source': > > {'source', > > 'tcp_options': 'tcpOptions', 'is_stateless': 'isStateless', > 'udp_options': > > 'udpOptions'}, '_is_stateless': False, 'swagger_types': {'icmp_options': > > 'IcmpOptions', 'protocol': 'str', 'source': 'str', 'tcp_options': > > 'TcpOptions', 'is_stateless': 'bool', 'udp_options': 'UdpOptions'}, > > '_protocol': '6', '_source': '0.0.4.0/24', '_tcp_options': { > > "destination_port_range": { > > "max": 22, > > "min": 22 > > }, > > "source_port_range": null > > }} > > if x==y: > > print "true" > > else: > > print "false" > > > > > > These dictionaries are same exactly. but its returning false. i don't > > understand > > what to do? > > Let's narrow down the problem, with the help of the interactive > interpreter: > > >>> changed = [k for k in x if x[k] != y[k]] > >>> changed > ['_tcp_options'] > >>> k, = changed > > A closer look: > > >>> x[k] > {'source_port_range': None, 'destination_port_range': {'max': '22', 'min': > '22'}} > >>> y[k] > {'source_port_range': None, 'destination_port_range': {'max': 22, 'min': > 22}} > > So x uses strings for min/max while y uses integers, and those do not > compare equal in Python: > > >>> 22 == "22" > False > > Once you fix this > > >>> x[k]["destination_port_range"]["max"] = 22 > >>> x[k]["destination_port_range"]["min"] = 22 > > you get the expected result: > > >>> x == y > True > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor