如何将dict键与列表中对象的属性相关联?

时间:2016-07-29 18:31:28

标签: python object dictionary

<!--Your stylesheet -->
<link rel="stylesheet" type="text/css" href="css/bootstrap-theme.min.css"> 
<!--To Add GlyphIcon -->
<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css">

我有一个while循环填充一个对象列表,另一个循环填充一个关联Var1:Account2的字典。但是,如果密钥与对象的Account1匹配,我需要将字典的值放入每个对象中。

基本上,我有:

@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../fonts/glyphicons-halflings-regular.eot');
  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix')    format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}

我试过这个:

class SpreadsheetRow(object):
def __init__(self,Account1):
    self.Account1=Account1
    self.Account2=0

但是,它不起作用,我怀疑这是我的第一个“if”语句,因为listOfSpreadsheetRowObjects只是这些对象的列表。我如何访问每个对象的account1,以便根据需要匹配它们?

最终,我应该有三个具有以下信息的对象: SpreadsheetRow self.Account1 =帐户1 self.Account2 =(如果account1与我字典中的键匹配,则来自我的字典中的v)

3 个答案:

答案 0 :(得分:0)

您可以在any()中使用生成器表达式来检查这些对象的任何account1属性是否与k相等:

if any(k == item.account1 for item in listOfSpreadsheetRows):

答案 1 :(得分:0)

您可以尝试使用next功能,如下所示:

next(i for i in listOfSpreadsheetRows if k == i.account1)

答案 2 :(得分:0)

如果您有字典d并想要获取与密钥x相关联的值,那么您可以像这样查找该值:

v = d[x]

因此,如果您的词典被称为dict_of_account1_to_account2且密钥为self.Account1,并且您想将该值设置为self.Account2,那么您可以这样做:

self.Account2 = dict_of_account1_to_account2[self.Account1]

使用字典的全部意义在于,您不必遍历整个事物来查找字典。

否则,如果在创建所有.Account2对象后对SpreadsheetRow进行初始化,那么使用self没有意义,则需要遍历每个SpreadsheetRow item并为每一个做任务,如下所示:

for row in listofSpreadsheetRowObjects:
    for k, v in dict_of_account1_to_account2.iteritems():
        if row.Account1 == k:
            row.Account2 = v

但同样,您不必遍历字典进行分配,只需从字典中查找row.Account1

for row in listofSpreadsheetRowObjects:
    row.Account2 = dict_of_account1_to_account2[row.Account1]