我有一个关于习语和可读性的问题,似乎有一个针对这个特殊情况的Python哲学冲突:
我想从字典B中构建字典A.如果B中不存在特定的键,则不执行任何操作并继续.
哪种方式更好?
try:
A["blah"] = B["blah"]
except KeyError:
pass
Run Code Online (Sandbox Code Playgroud)
要么
if "blah" in B:
A["blah"] = B["blah"]
Run Code Online (Sandbox Code Playgroud)
"做并请求原谅"与"简单和明确".
哪个更好?为什么?
我有一个字符串说: My Name is %NAME% and my age is %AGE%.
%XXX%是占位符.我们需要从对象替换值.
对象看起来像: {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"}
我需要解析对象并用相应的值替换字符串.所以最终输出将是:
我的名字是迈克,我的年龄是26岁.
整个过程必须使用纯javascript或jquery完成.
很抱歉,如果之前已经回答过这个问题 - 我一直在寻找解决方案,但我可能没有使用正确的搜索字词.
无论如何,我要做的是在给定索引列表和值的情况下以编程方式在字典中设置值,可能是嵌套的.
例如,假设我的索引列表是:
['person', 'address', 'city']
Run Code Online (Sandbox Code Playgroud)
而且价值是
'New York'
Run Code Online (Sandbox Code Playgroud)
我想要一个字典对象,如:
{ 'Person': { 'address': { 'city': 'New York' } }
Run Code Online (Sandbox Code Playgroud)
基本上,列表表示嵌套字典中的"路径".
我想我可以构建字典本身,但我磕磕绊绊的是如何设置值.显然,如果我只是手动编写代码,那将是:
dict['Person']['address']['city'] = 'New York'
Run Code Online (Sandbox Code Playgroud)
但是,如果我只有一个索引和值的列表,我如何索引到字典并以编程方式设置值?
希望这是有道理的,并不是一个愚蠢的问题... :)谢谢你的帮助.
这可能是一个简单的问题,所以希望有人能够轻易指出我的错误或者这是否可能.
我有一个具有多个对象作为属性的对象.我希望能够动态设置这些对象的属性,如下所示:
class Person(object):
def __init__(self):
self.pet = Pet()
self.residence = Residence()
class Pet(object):
def __init__(self,name='Fido',species='Dog'):
self.name = name
self.species = species
class Residence(object):
def __init__(self,type='House',sqft=None):
self.type = type
self.sqft=sqft
if __name__=='__main__':
p=Person()
setattr(p,'pet.name','Sparky')
setattr(p,'residence.type','Apartment')
print p.__dict__
Run Code Online (Sandbox Code Playgroud)
输出是:
{'pet':< main .Pet对象位于0x10c5ec050>,'住所':< main .Residence对象位于0x10c5ec0d0>,'pet.name':'Sparky','residence.type':'公寓'}
如您所见,不是在人的宠物对象上设置name属性,而是创建一个新属性"pet.name".
我无法将person.pet指定为setattr,因为不同的子对象将通过相同的方法设置,即解析某些文本并在找到相关键时填写对象属性.
有没有简单/内置的方法来实现这一目标?
或者我可能需要编写一个递归函数来解析字符串并多次调用getattr,直到找到必要的子对象,然后在找到的对象上调用setattr?
谢谢!
我想以编程方式访问字典.我知道如何使用递归函数执行此操作,但有更简单的方法吗?
example = {'a': {'b': 'c'},
'1': {'2': {'3': {'4': '5'}}}}
keys = ('a', 'b')
example[keys] = 'new'
# Now it should be
# example = {'a': {'b': 'new'},
# '1': {'2': {'3': {'4': '5'}}}}
keys = ('1', '2', '3', '4')
example[keys] = 'foo'
# Now it should be
# example = {'a': {'b': 'new'},
# '1': {'2': {'3': {'4': 'foo'}}}}
keys = ('1', '2')
example[keys] = 'bar'
# Now it should be
# example = {'a': {'b': 'new'},
# …Run Code Online (Sandbox Code Playgroud) 我在列表中有几个嵌套字典,我需要验证是否存在特定路径,例如
dict1['layer1']['layer2'][0]['layer3']
Run Code Online (Sandbox Code Playgroud)
如何使用 IF 语句检查路径是否有效?
我本来想
if dict1['layer1']['layer2'][0]['layer3'] :
Run Code Online (Sandbox Code Playgroud)
但它不起作用
python ×5
dictionary ×2
python-3.x ×2
attributes ×1
defaultdict ×1
idioms ×1
javascript ×1
jquery ×1
list ×1
python-2.7 ×1
readability ×1
recursion ×1
setattr ×1
string ×1