Python中定义的dict条目

Python中定义的dict条目,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,有没有办法制作出如下的东西 让我们有: a = {'p': 1, 'r': 2} b = {'p': 1, 'r': 3} 这是一个简化的条目,但是假设有更多的公共键值对,因此目标是使定义更小、更可读。有没有办法给它取个别名以便我可以写下,例如: m = ('p': 1) # note this does not work a = {m, 'r': 2} b = {m, 'r': 3} 以下是我的问题的模糊版本: what = { sr: [{'los_angels': m

有没有办法制作出如下的东西

让我们有:

a = {'p': 1, 'r': 2}
b = {'p': 1, 'r': 3}
这是一个简化的条目,但是假设有更多的公共键值对,因此目标是使定义更小、更可读。有没有办法给它取个别名以便我可以写下,例如:

m = ('p': 1)  # note this does not work
a = {m, 'r': 2}
b = {m, 'r': 3}
以下是我的问题的模糊版本:

what = {
        sr: [{'los_angels': mg, 'sg': sg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'sg': sg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                    {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        as: [{'los_angels': mg, 'ua': boston, 'new_york': seattle}, {'los_angels': mg, 'new_york': seattle},
                {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        dd: [{'los_angels': 'orange', 'new_york': seattle},
                    {'los_angels': 'orange', 'new_york': seattle, 'ua': boston},
                    {'los_angels': 'orange', 'new_york': seattle, 'apple': 'IS'},
                    {'los_angels': 'orange', 'new_york': seattle, 'ua': boston, 'apple': 'IS'}],
        a: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        b: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        c: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        d: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        e: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        f: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        g: [{}],
        h: [{}],
        i: [{}, {'los_angels': mg}],
    }

因此,我正在寻找一些方法来制作“洛杉矶天使”:橙色部分,“ua”:波士顿更小:)

您只需要对代码做一点小小的更改:

m=(('p',1),)
a=dict(m, r=2)
b=dict(m, r=3)

您只需要对代码进行最小的更改:

m=(('p',1),)
a=dict(m, r=2)
b=dict(m, r=3)

您只需要对代码进行最小的更改:

m=(('p',1),)
a=dict(m, r=2)
b=dict(m, r=3)

您只需要对代码进行最小的更改:

m=(('p',1),)
a=dict(m, r=2)
b=dict(m, r=3)

不能像这样使用预定义的键值对,否,但还有其他选项:

  • 您可以定义一个基本字典,然后用它更新
    a
    b

    m = {'p': 1}
    a = {'r': 2}
    a.update(m)
    b = {'r': 3}
    a.update(m)
    
  • 您可以使用
    dict()
    函数将两个词典合并成一个新词典,或添加其他键作为关键字参数:

    m = {'p': 1}
    a = dict(m, r=2)
    b = dict(m, r=3)
    
    这需要使用其他键(如
    r
    )。您可以使用
    **
    语法来解决该限制:

    m = {'p': 1}
    a = dict(m, **{'r': 2})
    b = dict(m, **{'r': 3})
    
    现在
    r
    可以是任何字符串

  • 您可以将键和值定义为单独的变量,并使用这些变量:

    m_key, m_value = 'p', 1
    a = {m_key: m_value, 'r': 2}
    b = {m_key: m_value, 'r': 3}
    
将第二个选项应用于模糊样本:

la_orange = {'los_angels': 'orange'}

what = {
        sr: [{'los_angels': mg, 'sg': sg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'sg': sg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                    {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        as: [{'los_angels': mg, 'ua': boston, 'new_york': seattle}, {'los_angels': mg, 'new_york': seattle},
                {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        dd: [dict(la_orange, new_york=seattle),
                    dict(la_orange, new_york=seattle, ua=boston),
                    dict(la_orange, new_york=seattle, apple='IS'),
                    dict(la_orange, new_york=seattle, ua=boston, apple='IS')],
        a: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        b: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        c: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        d: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        e: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        f: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        g: [{}],
        h: [{}],
        i: [{}, {'los_angels': mg}],
    }
如果需要组合多个这样的预定义词典,可以创建一个helper函数:

def combine_dicts(*d, **kw):
    """Combine dictionaries into one.

    Keys in later dictionaries override those in earlier dictionaries, with
    keyword arguments being applied last.

    """
    return reduce(lambda d1, d2: dict(d1, **d2), d + (kw,))
然后将其用于:

a = combine_dicts(base1, base2, {'some non-identifier key': 42}, r=3)

不能像这样使用预定义的键值对,否,但还有其他选项:

  • 您可以定义一个基本字典,然后用它更新
    a
    b

    m = {'p': 1}
    a = {'r': 2}
    a.update(m)
    b = {'r': 3}
    a.update(m)
    
  • 您可以使用
    dict()
    函数将两个词典合并成一个新词典,或添加其他键作为关键字参数:

    m = {'p': 1}
    a = dict(m, r=2)
    b = dict(m, r=3)
    
    这需要使用其他键(如
    r
    )。您可以使用
    **
    语法来解决该限制:

    m = {'p': 1}
    a = dict(m, **{'r': 2})
    b = dict(m, **{'r': 3})
    
    现在
    r
    可以是任何字符串

  • 您可以将键和值定义为单独的变量,并使用这些变量:

    m_key, m_value = 'p', 1
    a = {m_key: m_value, 'r': 2}
    b = {m_key: m_value, 'r': 3}
    
将第二个选项应用于模糊样本:

la_orange = {'los_angels': 'orange'}

what = {
        sr: [{'los_angels': mg, 'sg': sg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'sg': sg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                    {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        as: [{'los_angels': mg, 'ua': boston, 'new_york': seattle}, {'los_angels': mg, 'new_york': seattle},
                {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        dd: [dict(la_orange, new_york=seattle),
                    dict(la_orange, new_york=seattle, ua=boston),
                    dict(la_orange, new_york=seattle, apple='IS'),
                    dict(la_orange, new_york=seattle, ua=boston, apple='IS')],
        a: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        b: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        c: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        d: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        e: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        f: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        g: [{}],
        h: [{}],
        i: [{}, {'los_angels': mg}],
    }
如果需要组合多个这样的预定义词典,可以创建一个helper函数:

def combine_dicts(*d, **kw):
    """Combine dictionaries into one.

    Keys in later dictionaries override those in earlier dictionaries, with
    keyword arguments being applied last.

    """
    return reduce(lambda d1, d2: dict(d1, **d2), d + (kw,))
然后将其用于:

a = combine_dicts(base1, base2, {'some non-identifier key': 42}, r=3)

不能像这样使用预定义的键值对,否,但还有其他选项:

  • 您可以定义一个基本字典,然后用它更新
    a
    b

    m = {'p': 1}
    a = {'r': 2}
    a.update(m)
    b = {'r': 3}
    a.update(m)
    
  • 您可以使用
    dict()
    函数将两个词典合并成一个新词典,或添加其他键作为关键字参数:

    m = {'p': 1}
    a = dict(m, r=2)
    b = dict(m, r=3)
    
    这需要使用其他键(如
    r
    )。您可以使用
    **
    语法来解决该限制:

    m = {'p': 1}
    a = dict(m, **{'r': 2})
    b = dict(m, **{'r': 3})
    
    现在
    r
    可以是任何字符串

  • 您可以将键和值定义为单独的变量,并使用这些变量:

    m_key, m_value = 'p', 1
    a = {m_key: m_value, 'r': 2}
    b = {m_key: m_value, 'r': 3}
    
将第二个选项应用于模糊样本:

la_orange = {'los_angels': 'orange'}

what = {
        sr: [{'los_angels': mg, 'sg': sg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'sg': sg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                    {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        as: [{'los_angels': mg, 'ua': boston, 'new_york': seattle}, {'los_angels': mg, 'new_york': seattle},
                {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        dd: [dict(la_orange, new_york=seattle),
                    dict(la_orange, new_york=seattle, ua=boston),
                    dict(la_orange, new_york=seattle, apple='IS'),
                    dict(la_orange, new_york=seattle, ua=boston, apple='IS')],
        a: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        b: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        c: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        d: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        e: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        f: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        g: [{}],
        h: [{}],
        i: [{}, {'los_angels': mg}],
    }
如果需要组合多个这样的预定义词典,可以创建一个helper函数:

def combine_dicts(*d, **kw):
    """Combine dictionaries into one.

    Keys in later dictionaries override those in earlier dictionaries, with
    keyword arguments being applied last.

    """
    return reduce(lambda d1, d2: dict(d1, **d2), d + (kw,))
然后将其用于:

a = combine_dicts(base1, base2, {'some non-identifier key': 42}, r=3)

不能像这样使用预定义的键值对,否,但还有其他选项:

  • 您可以定义一个基本字典,然后用它更新
    a
    b

    m = {'p': 1}
    a = {'r': 2}
    a.update(m)
    b = {'r': 3}
    a.update(m)
    
  • 您可以使用
    dict()
    函数将两个词典合并成一个新词典,或添加其他键作为关键字参数:

    m = {'p': 1}
    a = dict(m, r=2)
    b = dict(m, r=3)
    
    这需要使用其他键(如
    r
    )。您可以使用
    **
    语法来解决该限制:

    m = {'p': 1}
    a = dict(m, **{'r': 2})
    b = dict(m, **{'r': 3})
    
    现在
    r
    可以是任何字符串

  • 您可以将键和值定义为单独的变量,并使用这些变量:

    m_key, m_value = 'p', 1
    a = {m_key: m_value, 'r': 2}
    b = {m_key: m_value, 'r': 3}
    
将第二个选项应用于模糊样本:

la_orange = {'los_angels': 'orange'}

what = {
        sr: [{'los_angels': mg, 'sg': sg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'sg': sg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle},
                    {'los_angels': mg, 'new_york': seattle},
                    {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                    {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        as: [{'los_angels': mg, 'ua': boston, 'new_york': seattle}, {'los_angels': mg, 'new_york': seattle},
                {'los_angels': mg, 'ua': boston, 'new_york': seattle, 'apple': 'IS'},
                {'los_angels': mg, 'new_york': seattle, 'apple': 'IS'}],
        dd: [dict(la_orange, new_york=seattle),
                    dict(la_orange, new_york=seattle, ua=boston),
                    dict(la_orange, new_york=seattle, apple='IS'),
                    dict(la_orange, new_york=seattle, ua=boston, apple='IS')],
        a: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        b: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        c: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        d: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        e: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        f: [{}, {'ua': boston}, {'new_york': seattle}, {'new_york': seattle, 'ua': boston}],
        g: [{}],
        h: [{}],
        i: [{}, {'los_angels': mg}],
    }
如果需要组合多个这样的预定义词典,可以创建一个helper函数:

def combine_dicts(*d, **kw):
    """Combine dictionaries into one.

    Keys in later dictionaries override those in earlier dictionaries, with
    keyword arguments being applied last.

    """
    return reduce(lambda d1, d2: dict(d1, **d2), d + (kw,))
然后将其用于:

a = combine_dicts(base1, base2, {'some non-identifier key': 42}, r=3)


好的,让我们把事情变得更一般,假设我在一些字典中有n个这样的常用条目:)我有一些自定义条目:)@Yeti:前两种方法可以处理任意大小的基础字典进行扩展。这不是我需要的,因此,我添加了我的问题的一个废弃版本:)这基本上是一个配置对象定义:)@Yeti:其中每一个带有
{'los_angels':'orange'}
的字典都可以用第二个选项来处理。是的,但是如果我有更多的元素,它们就不容易一起使用:a={'los_angels':'orange},b={'ua':boston}不能写为dict(a,b,s=2)composibility这不是直截了当的:)好吧,让我们把事情变得更一般,假设我在一些dict中有n个这样的常用条目:)我有一些自定义条目:)@Yeti:前两种方法可以处理任何大小的基础字典进行扩展。这不是我需要的,因此,我添加了我的问题的一个废弃版本:)这基本上是一个配置对象定义:)@Yeti:其中每一个带有
{'los_angels':'orange'}
的字典都可以用第二个选项来处理。是的,但是如果我有更多的元素,它们就不容易一起使用:a={'los_angels':'orange},b={'ua':boston}不能写为dict(a,b,s=2)composibility这不是直截了当的:)好吧,让我们把事情变得更一般,假设我在一些dict中有n个这样的常用条目:)我有一些自定义条目:)@Yeti:前两种方法可以处理任何大小的基础字典进行扩展。这不是我需要的,因此,我添加了我的问题的一个废弃版本:)这基本上是一个配置对象定义:)@Yeti:其中每一个带有
{'los_angels':'orange'}
的字典都可以用第二个选项来处理。是的,但是如果我有更多的元素,它们就不容易一起使用:a={'los_angels':'orange},b={'ua':boston}不能写为dict(a,b,s=2)复合性它不是直截了当的:)O