我更改了代码,谢谢更正

我对Python非常陌生,发现If-Else条件<expression 1> if <condition> else <expression 2>这一行非常方便,我想知道是否可以将它直接实现到字典中,以创建一个更灵活的字典:如果某个语句有效,那么就会存在键-值对,否则它就不会存在于字典中

以下是一个超级简化的示例代码,可能没有多大意义,但我希望能明白我的意思:

animals = ['dog', 'duck', 'goose', 'swan']
legs = [4, 2, 2, 2]
beak_color = ['black','red', 'yellow']

for i in range(len(animals)):
    features = {'legs_num': legs[i], [None if animals[i] == 'dogs' else 'beak': beak_color[i - 1]]}
    print(features)

但是会有一个红色下划线来表示‘如果动物没有[i]==’狗‘否则’喙‘:’说:‘

100

可能会引发该错误,因为Python不会将None识别为键-值元素.

有可能解决这个问题吗?否则,我只需添加新的键值对,而不使用该单行表达式

推荐答案

在一行中实现这一点的一种方法是使用|运算符,它是merges dictionaries(需要Python3.9或更高版本).

在这里,代码将{'legs_num': legs[i]}与一个有条件地为{}beak_color[i-1]的dict合并.

animals = ['dog', 'duck', 'goose', 'swan']
legs = [4, 2, 5, 6]
beak_color = ['black', 'red', 'yellow']

for i in range(len(animals)):
    features = {'legs_num': legs[i]} | ({} if animals[i] == 'dog' else {'beak': beak_color[i-1]})
    print(features)

输出:

{'legs_num': 4}
{'legs_num': 2, 'beak': 'black'}
{'legs_num': 5, 'beak': 'red'}
{'legs_num': 6, 'beak': 'yellow'}

就像@DeanVanGreunen的回答一样,我更改了您的原始代码,使legs有4个项目.

Python相关问答推荐

调试回归无法解决我的问题

在Pandas框架中截短至固定数量的列

如何在Python中使用时区夏令时获取任何给定本地时间的纪元值?

添加包含中具有任何值的其他列的计数的列

根据网格和相机参数渲染深度

将特定列信息移动到当前行下的新行

scikit-learn导入无法导入名称METRIC_MAPPING64'

Python,Fitting into a System of Equations

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

关于Python异步编程的问题和使用await/await def关键字

海上重叠直方图

将输入聚合到统一词典中

将JSON对象转换为Dataframe

字符串合并语法在哪里记录

调用decorator返回原始函数的输出

用砂箱开发Web统计分析

合并帧,但不按合并键排序

通过ManyToMany字段与Through在Django Admin中过滤

使用BeautifulSoup抓取所有链接

dask无groupby(ddf. agg([min,max])?''''