python - 如何迭代和访问字典中的单个值
问题描述
我正在做一些 python 作业,我被要求定义一个函数,该函数接受一个字典,该字典将公共汽车路线映射到公共汽车站,并返回一个字典,将公共汽车站映射到停靠在该站的公共汽车路线列表。输入将是这样的:
{"Lentil": ["Chinook", "Orchard", "Valley", "Emerald","Providence",
"Stadium", "Main", "Arbor", "Sunnyside", "Fountain", "Crestview",
"Wheatland", "Walmart", "Bishop", "Derby", "Dilke"],
"Wheat": ["Chinook", "Orchard", "Valley", "Maple","Aspen", "TerreView",
"Clay", "Dismores", "Martin", "Bishop", "Walmart", "PorchLight",
"Campus"]}
我需要以某种方式将这些值变成键,同时检查这些值是否也是任何其他键中的值。基本上,我很难弄清楚如何访问这些值并使它们成为新键(不重复),而无需实际对它们进行硬编码。
解决方案
如果您使用Dictionary和List Comprehension这实际上非常容易。您可以在一行中获得所需的输出。
d1={"Lentil": ["Chinook", "Orchard", "Valley", "Emerald","Providence",
"Stadium", "Main", "Arbor", "Sunnyside", "Fountain", "Crestview",
"Wheatland", "Walmart", "Bishop", "Derby", "Dilke"],
"Wheat": ["Chinook", "Orchard", "Valley", "Maple","Aspen", "TerreView",
"Clay", "Dismores", "Martin", "Bishop", "Walmart", "PorchLight",
"Campus"]}
d2={x:[y for y in d1.keys() if x in d1[y]] for l in d1.values() for x in l}
print(d2)
更易读但更长的理解
d2={stop:[route for route in d1.keys() if stop in d1[route]] for stop_list in d1.values() for stop in stop_list}
输出:
{'Chinook': ['Lentil', 'Wheat'], 'Orchard': ['Lentil', 'Wheat'], 'Valley': ['Lentil', 'Wheat'], 'Emerald': ['Lentil'], 'Providence': ['Lentil'], 'Stadium': ['Lentil'], 'Main': ['Lentil'], 'Arbor': ['Lentil'], 'Sunnyside': ['Lentil'], 'Fountain': ['Lentil'], 'Crestview': ['Lentil'], 'Wheatland': ['Lentil'], 'Walmart': ['Lentil', 'Wheat'], 'Bishop': ['Lentil', 'Wheat'], 'Derby': ['Lentil'], 'Dilke': ['Lentil'], 'Maple': ['Wheat'], 'Aspen': ['Wheat'], 'TerreView': ['Wheat'], 'Clay': ['Wheat'], 'Dismores': ['Wheat'], 'Martin': ['Wheat'], 'PorchLight': ['Wheat'], 'Campus': ['Wheat']}
推荐阅读
- django - 将当前管理员用户设置为用户以保存在 Django Admin TabularInline 下的数据库中
- java - libGDX 重力和恒定加速度无法正常工作
- python - Python:socket.rcvfrom() 锁定所有脚本
- javascript - 在javascript中动态添加变量
- javascript - Javascript执行存储在变量中的onclick事件
- android - 文档中的固定快捷方式最低 API 级别与代码不兼容
- python - 如何将 virutualenvwrapper 与 Jupyter 笔记本链接
- java - 在 Java SWT 中绘制动态原语
- docker - 部署堆栈后向堆栈添加服务
- python - 将 C++ 行翻译成 Python 3