python 字典值比较和重新分配

jvidinwx  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(141)

我想解决一个行程问题,行程表。
下面是我的现有代码:

import array as arr

class Solution():
    def __init__(self):
        pass
    def printItenary(self,d):
        reverse_d = dict()
        for i in d:
            if i and d[i]:
                reverse_d[d[i]] = i
            else:
                print("Invalid Input")
                return
        for i in reverse_d:
            if reverse_d[i] not in reverse_d:
                starting_pt = reverse_d[i]
                break;
        while(starting_pt in d):
            print(starting_pt,"->",d[starting_pt],end=", ")
            starting_pt = d[starting_pt]
 
 
if __name__=="__main__":
    d = dict()
    d["Chennai"] = "Banglore"
    d["Bombay"] = "Delhi"
    d["Goa"] = "Chennai"
    d["Delhi"] = "Goa"
    obj = Solution()
    obj.printItenary(d)

字符串
问题是如果我再加一行

d["Chennai"] = "Delhi"


然后有多个值为一个单一的项目,所以我想给予一个条件,如果多个输入是给定的,那么我将给予优先级的基础上字典的顺序,除了它不是价值是在一个死胡同(如果它是最后一站)。
所以我的问题是,如何比较字典数据并根据这些条件更新值

xienkqul

xienkqul1#

你需要确保你处理了键不存在的边缘情况。如果你想让它不区分大小写,那么在比较中也做str.lower()

new_val = ...
val = d.get('Chennai')
val = min(val, new_val) if val else new_val
d['Chennai'] = val

字符串

3b6akqbq

3b6akqbq2#

为了确定字典顺序,可以使用ord()函数; ord('b')> ord('a')== True

if d["Chennai"]:
    if ord(new_value[0]) > ord(d["Chennai"][0]):
        d["Chennai"] = new_value
else:
    d["Chennai"] = new_value

字符串

相关问题