在CPython 3.6中获取字典中的第一个和第二个值

时间:2017-07-04 22:31:06

标签: python dictionary python-3.6 cpython

现在,在python 3.6中对字典进行了排序,必须有这样一种方法,即只能在两行中获取字典的第一个和第二个值。现在,我必须用7行来完成这个:

for key, value in class_sent.items():
    i += 1
    if i == 1:
        first_sent = value
    elif i == 2:
        second_sent = value

我也尝试过:

first_sent = next(iter(class_sent))
    second_sent = next(iter(class_sent))

但在这种情况下,second_sent等于first_sent。如果有人知道如何在尽可能少的行中获取字典中的第一个和第二个值,我会非常感激。

2 个答案:

答案 0 :(得分:8)

现在Python只保证保留**kwargs和类属性的顺序。

考虑到你正在使用的Python实现保证了你可以做的这种行为。

  1. 使用itertools.islice
  2. >>> from itertools import islice    
    >>> dct = {'a': 1, 'b': 2, 'c': 3}    
    >>> first, second = islice(dct.values(), 2)    
    >>> first, second
    (1, 2)
    
    1. 使用iter()
    2. >>> it = iter(dct.values())    
      >>> first, second = next(it), next(it)    
      >>> first, second
      (1, 2)
      
      1. 使用extended iterable unpacking(也会导致不必要的其他值解包):
      2. >>> first, second, *_ = dct.values()
        >>> first, second
        (1, 2)
        

答案 1 :(得分:0)

这可行:

first_sent, second_sent = list(class_sent.values())[:2]