我想创建一个函数,它返回一个字典的副本,不包括列表中指定的键.
考虑这个字典:
my_dict = {
"keyA": 1,
"keyB": 2,
"keyC": 3
}
Run Code Online (Sandbox Code Playgroud)
致电without_keys(my_dict, ['keyB', 'keyC'])应该返回:
{
"keyA": 1
}
Run Code Online (Sandbox Code Playgroud)
我想用一个整齐的字典理解一行来做这个,但我遇到了麻烦.我的尝试是这样的:
def without_keys(d, keys):
return {k: d[f] if k not in keys for f in d}
Run Code Online (Sandbox Code Playgroud)
这是无效的语法.我怎样才能做到这一点?
我正在学习Python,目前正在学习更多的词典.
我在想;
如果我有一个像这样的字典:d = {'key_1': 'value_a', 'key_2': 'value_b'}我希望将这个字典单独/分成变量,其中每个变量都是字典中的一个键,每个变量值都是字典中该键的值.
实现这一目标的最佳pythonic方法是什么?
d = {'key_1': 'value_a', 'key_2': 'value_b'}
#perform the command and get
key_1 = 'value_a'
key_2 = 'value_b'
Run Code Online (Sandbox Code Playgroud)
我试过了:key_1, key_2 = d但它不起作用.
基本上我正在寻求专家的智慧,以找出是否有更好的方法将2行代码减少为一行.
注意:这不是动态变量创建.
在Javascript中,我可以使用解构从一个衬里的javascript对象中提取所需的属性。例如:
currentUser = {
"id": 24,
"name": "John Doe",
"website": "http://mywebsite.com",
"description": "I am an actor",
"email": "example@example.com",
"gender": "M",
"phone_number": "+12345678",
"username": "johndoe",
"birth_date": "1991-02-23",
"followers": 46263,
"following": 345,
"like": 204,
"comments": 9
}
let { id, username } = this.currentUser;
console.log(id) // 24
console.log(username) //johndoe
Run Code Online (Sandbox Code Playgroud)
在Python中,对于Python字典和Python对象,我们是否有类似的东西?适用于python对象的Python方法示例:
class User:
def __init__(self, id, name, website, description, email, gender, phone_number, username):
self.id = id
self.name = name
self.website = website
self.description = description
self.email = email
self.gender = gender …Run Code Online (Sandbox Code Playgroud) 我正在尝试spread在Python 3.6中编写一个函数(我不能使用任何较新的版本),到目前为止,我已经有了类似以下内容的东西:
d = {"a": 1, "b": 2, "c": 3}
a, b, c = spread(d, ['a', 'b', 'c'])
a
>> 1
b
>> 2
c
>> 3
Run Code Online (Sandbox Code Playgroud)
问题是:存在某种重复,因为左侧的位置必须与函数第二个参数上的键列表匹配才能使其有意义。因此,更改键列表的顺序,变量a将拥有与相比不同的值d['a']。我需要保持一致性
a, b, c = spread(d) # how?
Run Code Online (Sandbox Code Playgroud)
或者spread(d, ???)。我不考虑初始化a, b, c,None然后将它们作为列表传递。
关于如何解决这个问题有什么想法或线索吗?可能吗?谢谢!