python 字典值比较和重新分配

jvidinwx  于 2024-01-05  发布在  Python
关注(0)|答案(2)|浏览(159)

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

  1. import array as arr
  2. class Solution():
  3. def __init__(self):
  4. pass
  5. def printItenary(self,d):
  6. reverse_d = dict()
  7. for i in d:
  8. if i and d[i]:
  9. reverse_d[d[i]] = i
  10. else:
  11. print("Invalid Input")
  12. return
  13. for i in reverse_d:
  14. if reverse_d[i] not in reverse_d:
  15. starting_pt = reverse_d[i]
  16. break;
  17. while(starting_pt in d):
  18. print(starting_pt,"->",d[starting_pt],end=", ")
  19. starting_pt = d[starting_pt]
  20. if __name__=="__main__":
  21. d = dict()
  22. d["Chennai"] = "Banglore"
  23. d["Bombay"] = "Delhi"
  24. d["Goa"] = "Chennai"
  25. d["Delhi"] = "Goa"
  26. obj = Solution()
  27. obj.printItenary(d)

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

  1. d["Chennai"] = "Delhi"


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

xienkqul

xienkqul1#

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

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

字符串

3b6akqbq

3b6akqbq2#

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

  1. if d["Chennai"]:
  2. if ord(new_value[0]) > ord(d["Chennai"][0]):
  3. d["Chennai"] = new_value
  4. else:
  5. d["Chennai"] = new_value

字符串

相关问题