Python中文
首页
教程
问答
标签
搜索
登录
注册
Python:在一个字典上循环,如果条件是M,则在新字典中创建键/值对
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我想比较一本字典和另一本字典的值。如果值满足某些条件,我想创建第三个字典,其中的键和值对将根据匹配情况而变化。在</p> <p>这是一个人为的例子,说明了我的问题。在</p> <p><em>编辑:对于所有的返回,很抱歉,但是堆栈溢出无法识别单个返回,并且在一行上运行3-4行,使代码难以辨认。而且,它不会把我的代码变灰。不知道为什么。</em></p> <pre><code>employee = {'skills': 'superintendent', 'teaches': 'social studies', 'grades': 'K-12'} school_districts = {0: {'needs': 'superintendent', 'grades': 'K-12'}, 1:{'needs': 'social_studies', 'grades': 'K-12'}} jobs_in_school_district = {} for key in school_districts: if (employee['skills'] == school_districts[key]['needs']): jobs_in_school_district[key] = {} jobs_in_school_district[key]['best_paying_job'] = 'superintendent' if (employee['teaches'] == school_districts[key]['needs']): jobs_in_school_district[key] = {} jobs_in_school_district[key]['other_job'] = 'social_studies_teacher' print(jobs_in_school_district) </code></pre> <p>这是我希望看到的“就业机会”在“学区”的价值:</p> ^{pr2}$ <p>我得到的是:</p> <pre><code>{1: {'other_job': 'social_studies_teacher'}} </code></pre> <p>我明白这是怎么回事。Python在第一个if块(第6-8行)之后将<code>jobs_in_school_district</code>设置为<code>{0: {'best_paying_job': 'superintendent'}</code>。然后执行第二个if块(第10行)。但随后它重写了第11行的<code>{0: {'best_paying_job': 'superintendent'}</code>,并再次创建一个空dict。然后在第12行将1:{'other\'job':'social_studies_teacher'}'分配给<code>jobs_in_school_district</code>。在</p> <p>但是如果我消除了for块(第7行和第11行)中的两个<code>jobs_in_school_district[key] = {}</code>,只在“for”语句(新的第5行)前面放一个,如下所示:</p> <pre><code>jobs_in_school_district[key] = {} for key in school_districts: if (employee['skills'] == school_districts[key]['needs']): jobs_in_school_district[key]['best_paying_job'] = 'superintendent' if (employee['teaches'] == jobs[key]['needs']): jobs_in_school_district[key]['other_job'] = 'social_studies_teacher' print(jobs_in_school_district) </code></pre> <p>它只会检查“学区”dict中的第一个键,然后停止(它停止循环,我想,我不知道),所以我得到:</p> <pre><code>jobs_in_school_district = {0: {'best_paying_job': 'superintendent'} </code></pre> <p>(我试着重新写了几次,但有时会出现“键错误”)。在</p> <p>第一个问题:为什么第二块代码不起作用? 第二个问题:我如何编写代码使其正常工作?在</p> <p>(我不太了解“下一步”(方法或函数)以及它的作用,所以如果我必须使用它,请您解释一下好吗?谢谢)。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>如果您将社会研究更改为不带下划线的社会研究,则代码将按预期工作。请看这一行:</p> <pre><code>school_districts = {0: {'needs': 'superintendent', 'grades': 'K-12'}, 1:{'needs': 'social_studies', 'grades': 'K-12'}} </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
Django:。是不是“超级用户”字段不起作用
4 回答
Django:'DeleteQuery'对象没有属性'add'
4 回答
Django:'ModelForm'对象没有属性
8 回答
Django:'python manage.py runserver'返回'TypeError:'WindowsPath'类型的对象没有len()
10 回答
Django:'Python管理.pysyncdb'不创建我的架构表
8 回答
Django:'Python管理.py迁移“耗时数小时(和其他奇怪的行为)
2 回答
Django:'readonly'属性在我的ModelForm上不起作用
3 回答
Django:'RegisterEmployeeView'对象没有属性'object'
6 回答
Django:'str'对象没有属性'get'
3 回答
Django:'创建' 不能被指定为Order模型表单中的值,因为它是一个不可编辑的字段
8 回答
Django:“'QuerySet'类型的对象不是JSON可序列化的”
10 回答
Django:“'utf8'编解码器无法解码位置19983中的字节0xe9:无效的连续字节”,加载临时文件时
5 回答
Django:“<…>”需要有一个字段“id”的值,然后才能使用这个manytomy关系
10 回答
Django:“AnonymousUser”对象没有“get_full_name”属性
3 回答
Django:“ascii”编解码器无法解码位置1035中的字节0xc3:序号不在范围内(128)
9 回答
Django:“BaseTable”对象不支持索引
1 回答
Django:“collections.OrderedDict”对象不可调用
5 回答
Django:“Country”对象没有属性“all”
2 回答
Django:“Data”对象没有属性“save”
7 回答
Django:“datetime”类型的对象不是JSON serializab
4 回答